我只对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();
答案 0 :(得分:2)
flush()
确实有效,即使在Windows 2012上也是如此。但是PrintWriter
会吞下例外:您需要检查checkError()
的用户。最好只使用BufferedWriter
。BufferedWriter
中指定的任何内容)被缓冲,因此您的内存丢失在其他地方。