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循环显然以null结尾。它是我的250k +行txt文件的末尾。谢谢!
解决方案
您在哪里刷新/关闭PrintWriter或FileOutputStream?如果程序退出且未完成,则不会将所有结果都写出来。
在进程结束时需要 out.close()
(可能还有 p.flush()
?)来关闭文件输出流
其他提示
尝试在循环后添加p.flush()。
PrintWriter没有启用自动刷新功能,因此可能在程序终止之前不刷新文件的最后一位。
添加
在你的while循环之后, p.flush()
应该可以解决问题。
不隶属于 StackOverflow