我做了一个采用 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) {
}
}
然而,它的速度非常慢。有时需要超过一分钟。
我如何编写包含数万到一百万个字符的大文件?
原文由 user263078 发布,翻译遵循 CC BY-SA 4.0 许可协议
确保分配足够大的缓冲区:
您正在运行哪种操作系统?这也可以产生很大的不同。然而,花一 分钟 写出一个不太大的文件听起来像是一个系统问题。在 Linux 或其他 *ix 系统上,您可以使用诸如
strace
之类的东西来查看 JVM 是否进行了大量不必要的系统调用。 (很久以前,Java I/O 非常愚蠢,如果你不小心的话,它会产生疯狂数量的低级write()
系统调用,但是当我说“很久以前”时,我平均 1998 年左右。)_编辑_——请注意,Java 程序以一种简单的方式编写一个简单的文件,但速度却非常慢,这在本质上是一种奇怪的情况。你能判断在写入文件时 CPU 是否负载过重吗?不应该的;这样的事情应该几乎没有CPU负载。