java PrintWritter 或 BufferedOutputStream 方法刷新在 Windows 2012



我只对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. flush()确实有效,即使在Windows 2012上也是如此。但是PrintWriter确实吞咽了例外:您需要检查那些checkError() 。最好只使用BufferedWriter
  2. 最多 4096 或 8192 个字符,不确定哪个(或您在BufferedWriter中指定的任何字符(被缓冲,因此您的记忆丢失在其他地方。

最新更新