【发布时间】:2019-04-17 18:34:01
【问题描述】:
我有一个程序,它使用循环进行大量处理,并在许多不同点将字符串写入文件。我不确定如何最好地做到这一点的整体设计。在运行期间的任何时候我都不需要从文件中读取,但之后会想要查看它。
首先,带有 FileWriter 的 BufferedWriter 是否合理?
其次,大概我不想在每次我想写东西的时候打开和关闭这个(每秒几次)。
但是,如果我使用资源的 try,那么我实际上必须将整个程序放在该 try 中,这正常吗?
此刻骨架的样子:
try (FileWriter writer = new FileWriter("filename.txt");
BufferedWriter bw = new BufferedWriter(writer)) {
} catch (IOException e) {
//catch IO error
}
for (//main loop){
bw.write(string);
for (//several sub loops){
bw.write(//more strings);
}
for (//several sub loops){
bw.write(//more strings);
}
}
bw.write(//final string);
try {
bw.close();
} catch (IOException ex) {
//catch IO error
}
这看起来合理还是有更好的方法?非常感谢您的帮助。
编辑 - 感谢大家的帮助,完全回答了我的问题。
【问题讨论】:
-
这段代码如何编译?
bw不在 try-with-resources 块之后的范围内。您是否在其他地方定义了另一个bw? -
它不能编译,它只是一个草图。这是我的问题之一,我是否需要将整个代码放入 try-with-resources 中的 for 循环中?
-
@John 有一些你没有的方法,一种方法是在 try-with-resources 块之前生成
String写入,然后将其作为一个整体写入。但正如我在回答中所描述的,这对大文件不是那么友好。但是,只要您不长时间停顿写几个小时,请不要犹豫,保持文件打开并将块包裹在它周围。通过在单一方法中生成内容来提高可读性,这样 try 块就不会变得过于臃肿和难以阅读。
标签: java bufferedwriter