我想逐行写一些文件。 我有一个问题,这个过程需要花费很多时间并且有时会变得无法解决。当前版本在最后将内容写入文件。是否可以逐行将其写入文件?
E.g。如果我在第4行(400)之后登陆,则该文件当前为空。但是我希望文件中已有4行。
这是我的代码:
String path = args[0];
String filename = args[1];
BufferedReader bufRdr = // this does not matter
BufferedWriter out = null;
FileWriter fstream;
try {
fstream = new FileWriter(path + "Temp_" + filename);
out = new BufferedWriter(fstream);
} catch (IOException e) {
System.out.println(e.toString());
}
String line = null;
try {
while ((line = bufRdr.readLine()) != null) {
// HERE I'm doing the writing with out.write
out.write(...);
}
} catch (IOException e) {
System.out.println(e.toString());
}
try {
out.close();
} catch (IOException e) {
System.out.println(e.toString());
}
答案 0 :(得分:5)
如果要确保已写入编写器的数据进入文件,请使用刷新功能
out.flush()
答案 1 :(得分:3)
在out.flush()
out.write(...)
答案 2 :(得分:2)
致电out.flush()
后使用out.write(...)
。
答案 3 :(得分:2)
考虑到java文档FileWriter,您可以使用FileWriter直接将文件写入文件,而无需使用BufferedWriter。
另外,正如所指出的,您需要在关闭缓冲区之前刷新数据。函数write
仅填充缓冲区,但不会写入磁盘上的文件。此操作通过使用flush
或close
(将缓冲区的当前内容写入磁盘)完成。这两个函数之间的区别在于flush
让你在之后写东西,close
肯定会关闭流。
答案 4 :(得分:1)
在out.flush()或out.close()关闭之前,通常不会写入写入缓冲区的数据。所以对于你的要求你应该使用out.flush();