我只对Windows 2012服务器有问题。我正在尝试使用PrintWritter或BufferedOutputStream将大文件写入磁盘,问题是在Windows 2012中,当调用方法flush((将数据流发送到文件时不起作用。仅在调用 close(( 方法时将数据写入文件。问题是数据保存在内存中并消耗了大量文件。在我的 Windows 7 或 8 中工作正常。Windows 2012 发布了一些想法?谢谢
简单的例子:
File file = new File("myFile.txt");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(file)), "UTF-8"), 1024 * 4);
for (int i = 0; i < 1000000; i++) {
out.write("Some info here");
if (i % 300 == 0) {
out.flush();
}
}
out.close();
-
flush()
确实有效,即使在Windows 2012上也是如此。但是PrintWriter
确实吞咽了例外:您需要检查那些checkError()
。最好只使用BufferedWriter
。 - 最多 4096 或 8192 个字符,不确定哪个(或您在
BufferedWriter
中指定的任何字符(被缓冲,因此您的记忆丢失在其他地方。