我只有Windows 2012服务器有问题。我正在尝试使用PrintWritter或BufferedOutputStream将一个大文件写入磁盘,问题是在Windows2012中,当调用flush()方法将数据流发送到文件时不起作用。只有在调用close()方法时才将数据写入文件。问题是数据保存在内存中,消耗了大量的文件。在我的Windows 7或8中工作正常。Windows2012发布了一些想法?谢谢,
简单的例子:
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();发布于 2017-11-15 07:10:00
即使在Windows2012上,
flush()也能正常工作。然而,PrintWriter确实接受了异常:您需要检查那些具有checkError()的异常。最好只使用最多4096或8192个字符的BufferedWriter.BufferedWriter中指定的任何字符),因此内存丢失在其他地方。https://stackoverflow.com/questions/47296576
复制相似问题