java PrintWritter或BufferedOutputStream方法刷新不能在Windows 2012上运行

时间:2017-11-14 22:50:55

标签: java windows printwriter

我只对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();

1 个答案:

答案 0 :(得分:2)

  1. flush()确实有效,即使在Windows 2012上也是如此。但是PrintWriter会吞下例外:您需要检查checkError()的用户。最好只使用BufferedWriter
  2. 最多4096或8192个字符,不确定哪个(或您在BufferedWriter中指定的任何内容)被缓冲,因此您的内存丢失在其他地方。