[英]Problems with BufferedReader / PrintWriter?
我通过输入文件的每一行使用 BufferedReader 和 PrintWriter 到 go,对某些行进行更改,结果为 output。 如果一行没有发生变化,它就按原样打印到 output 文件中。 然而,出于某种原因,该过程过早结束。 代码看起来像这样:
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()
吗?)在流程结束时关闭文件 output stream
尝试在循环后添加一个 p.flush() 。
PrintWriter 没有启用自动刷新,因此在程序终止之前文件的最后一位可能没有刷新。
在 while 循环之后添加一个p.flush()
应该可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.