Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java PrintWriter或BufferedOutputStream方法flush在windows 2012上不起作用_Java_Windows_Printwriter - Fatal编程技术网

java PrintWriter或BufferedOutputStream方法flush在windows 2012上不起作用

java PrintWriter或BufferedOutputStream方法flush在windows 2012上不起作用,java,windows,printwriter,Java,Windows,Printwriter,我只有Windows 2012服务器有问题。 我正在尝试使用PrintWriter或BufferedOutputStream将一个大文件写入磁盘,问题是在Windows 2012中,调用方法flush()将数据流发送到文件时无法工作。 仅在调用close()方法时将数据写入文件。 问题是数据存储在内存中,并消耗了大量文件。 在我的Windows 7或8中工作正常。 windows 2012发布了一些想法? 谢谢 简单的例子: File file = new File("myFile.txt");

我只有Windows 2012服务器有问题。 我正在尝试使用PrintWriter或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();
File File=new文件(“myFile.txt”);

BufferedWriter out=新的BufferedWriter(新的OutputStreamWriter(新的BufferedOutputStream(文件)),“UTF-8”),1024*4; 对于(int i=0;i<1000000;i++){ 写出(“这里有一些信息”); 如果(i%300==0){ out.flush(); } } out.close();
  • flush()
    即使在Windows 2012上也能工作。但是,
    PrintWriter
    确实存在异常:您需要检查是否存在
    checkError()
    异常。最好只使用
    BufferedWriter
  • 最多4096或8192个字符,不确定缓冲了哪个字符(或您在
    BufferedWriter
    中指定的任何字符),因此您的内存丢失在别处

  • “数据保存在内存中并消耗了大量文件”是胡说八道。你有解决这个问题的办法吗?我面临着同样的问题?我的内存大小接近2GB,任何超过此大小的文件都不会被创建?我正在从大小高达10 Gb的源中获取流数据,我尝试使用BufferedWriter,但得到了一些结果。不工作。BufferedWriter out=新的BufferedWriter(新的OutputStreamWriter(新的BufferedOutputStream(文件)),“UTF-8”),1024*4;是否正在关闭
    缓冲写入程序
    ?为什么
    BufferedOutputStream
    ?是的,关闭()后数据写入磁盘很好。问题是所有数据首先都保存在内存中。记忆中的200万行。不是脸红。任务期间,文件大小始终为0字节。(冲水不生效)2。文件仅在调用close()方法时填充数据。(当任务结束时)3。内存监视器在任务期间不断增加,并在close()方法上恢复正常。