【发布时间】:2010-02-17 22:49:37
【问题描述】:
我正在使用 BufferedWriter 写入文本文件,但 BufferedWriter 在我正在运行的程序完成之前不会写入文件,并且我不确定如何更新它,因为 BufferedWriter 应该正在写入。这是我的一些代码:
FileWriter fw = null;
try {
fw = new FileWriter("C:/.../" + target + ".pscr",true);
writer = new BufferedWriter(fw);
writer.write(target);
writer.newLine();
writer.write(Integer.toString(listOfFiles.length));
writer.newLine();
for(int i=0; i < listOfFiles.length; i++){
writer.write(probeArray[i] + "\t" + probeScoreArray[i]);
writer.newLine();
}
}
catch (IOException e1) {e1.printStackTrace();}
catch (RuntimeException r1) {r1.printStackTrace();}
finally {
try {
if(writer != null){
writer.flush();
writer.close();
}
}
catch (IOException e2) {e2.printStackTrace();}
}
我确实刷新了 BufferedWriter,但在它写入时仍然没有文件,而是在程序完成时。有什么建议吗?
【问题讨论】:
-
在关闭它之前你不会刷新它,所以我不确定你的倒数第二句话是什么意思。
-
我读到它应该在写入的所有时间都刷新,但是没有创建文件作为应该写入的东西。
-
不,它应该在缓冲区填满时刷新。如果您希望它更频繁地刷新,则必须自己手动进行。但你为什么在乎? BufferedWriter 用于提高效率。如果您不想要,请不要使用它。但是文件内容在大多数情况下基本上是没有用的,直到它完成。
-
您认为 PrintWriter 会做些什么不同的事情吗?我意识到,如果我希望在处理输出时立即输出,我可能不应该使用 BufferedWriter,但还有什么可以工作的呢?
-
您能否更新您的问题以显示代码的最正确的非工作版本?
标签: java flush bufferedwriter