문제

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 루프 후에는 트릭을 수행해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top