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