【发布时间】:2011-01-01 23:06:16
【问题描述】:
我创建了一个采用File 和String 的方法。它用该字符串作为其内容的新文件替换文件。
这是我做的:
public static void Save(File file, String textToSave) {
file.delete();
try {
BufferedWriter out = new BufferedWriter(new FileWriter(file));
out.write(textToSave);
out.close();
} catch (IOException e) {
}
}
但是它的速度非常缓慢。有时需要一分钟以上。
如何编写包含数万到一百万个字符的大文件?
【问题讨论】:
-
不需要删除文件。你正在覆盖它。
-
CPU 时间占多少时间,I/O(“系统”)时间占多少?对于大文件,创建巨大的
textToSave字符串可能会占主导地位。 -
与您的问题没有直接关系:您可能会考虑重组 out.close() 语句,以便它可以在 finally 块中完成。如果写入时抛出错误,它仍然会关闭。
-
不要忽略你的 IOexception,它会导致你的程序以神秘的方式失败
-
我建议不要在写入之前删除文件,或者直接覆盖它,而是写入一个临时文件,然后在旧文件上重命名它。这意味着如果 IO 中途失败,您不会冒用损坏的文件替换旧文件的风险。