Printwriter写入文件

时间:2014-09-26 14:27:55

标签: java

为什么我不能通过PrintWriter写入大量数据?

String result = acquireLengthyData();
PrintWriter out = new PrintWriter("D:/log.txt");
out.println(result);

其中result.lenght() = 189718。但log.txt中缺少一些数据。为什么?如何正确写入文件?

2 个答案:

答案 0 :(得分:5)

您需要在写入后刷新,它会刷新流。 PrintWriter#flush会这样做。

  

刷新流。如果流已保存任何   来自缓冲区中各种write()方法的字符,写出它们   立即到达目的地。

PrintWriter#flush - Java doc

代码段 -

PrintWriter out = new PrintWriter("D:/log.txt");
out.println(result);
out.flush();
out.close();

使用后不要忘记关闭作家。

答案 1 :(得分:3)

Class PrintWriter
  

与PrintStream类不同,如果启用了自动刷新,则只有在调用println,printf或format方法之一时才会执行,而不是每当输出换行符时。这些方法使用平台自己的行分隔符概念而不是换行符。

因此,您需要在创建Printwriter时启用automatic flush选项:

PrintWriter out = new PrintWriter(new FileWriter("D:/log.txt"),true);
out.println(result);
// finally{out.close();} with a null check, if required.

注意:启用自动刷新将强制将缓冲区中的内容写入输出流,即使缓冲区尚未达到其内容保留容量。