BufferedReader/PrintWriter有问题吗?

Mon*_*ter 5 java file bufferedreader

我正在使用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();
}
Run Code Online (Sandbox Code Playgroud)

但是,由于一些奇怪的原因,这个过程在我的输入文件的最末端过早地结束(实际打印出一半的一行).这有什么明显的原因吗?while循环显然以null结尾.它是我的250k +行txt文件的末尾.谢谢!

Bri*_*new 7

你在哪里刷新/关闭你的PrintWriter或FileOutputStream?如果程序退出且未完成,则不会写出所有结果.

在进程结束时,您需要out.close() (可能还有一个p.flush()?)来关闭文件输出流