BufferedReader / Printwriter의 문제?
-
05-07-2019 - |
문제
BufferedReader와 PrintWriter를 사용하여 입력 파일의 각 줄을 거치고 일부 라인을 변경하고 결과를 출력합니다. 선이 변경되지 않으면 출력 파일과 마찬가지로 인쇄됩니다. 그러나 어떤 이유로, 프로세스는 조기에 끝납니다. 코드는 다음과 같습니다.
BufferedReader in = new BufferedReader(new FileReader("in.txt"));
FileOutputStream out = new FileOutputStream("out.txt");
PrintWriter p = new PrintWriter(out);
String line = in.readLine();
while(line!=null)
{
if(line is special)
do edits and p.println(edited_line);
else
p.println(line);
line = in.readLine();
}
그러나 이상한 이유로,이 프로세스는 내 입력 파일의 끝까지 조기에 (실제로 절반의 줄을 인쇄 함) 종료됩니다. 이것에 대한 명백한 이유는 무엇입니까? while 루프는 명확하게 널에 의해 끝나고 있습니다. 그리고 250k+ 라인 TXT 파일의 끝입니다. 감사!
해결책
PrintWriter 또는 FileOutputStream은 어디에서 플러시/닫습니까? 프로그램이 종료되고 이것이 완료되지 않은 경우 모든 결과가 기록되지는 않습니다.
당신은 필요합니다 out.close()
(아마도 a p.flush()
프로세스 끝에서 파일 출력 스트림을 닫으려면
다른 팁
루프 후 p.flush ()를 추가 해보십시오.
Printwriter에는 자동 플러시가 활성화되어 있지 않으므로 프로그램이 종료되기 전에 파일의 마지막 비트가 플러시되지 않을 가능성이 높습니다.
추가 ap.flush()
당신의 while 루프 후에는 트릭을 수행해야합니다.
제휴하지 않습니다 StackOverflow