我正在使用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,但是在写入时仍然没有文件,而是在程序完成时.有什么建议么?
解决方法:
您需要将flush()调用移到try块中.例如,在每个newLine()调用之后.
也就是说,flush()最终是多余的,因为close()已经隐式调用了它.