Bufferedwriter工作,但文件为空?

我有以下代码:

CSVmaker(LinkedList data) { String [] myLines = makeStrings(data); // for (int k = 0; k<myLines.length; k++) // System.out.println(myLines[]); this.file = new File("rawdata.csv"); try { BufferedWriter buff = new BufferedWriter(new FileWriter(file)); for (int i = 0; i<myLines.length; i++){ buff.write(myLines[i]); buff.newLine(); System.out.println("done"); } } catch (IOException ex) { System.out.println("except"); } } 

不,我检查了myLines的内容,这些是正确的。

另外,我得到的印刷品就像我应该的那样经常打印“完成”。 csv已创建。

但是,如果我手动打开它,它是空的。

这可能是什么原因?

您永远不会刷新缓冲区,也不会关闭BufferedWriter。

在for循环之后,进行以下调用:

 buff.flush(); buff.close(); 

即使有其他资源,完成后关闭它们也是一个好主意。

您必须在使用后close()流。
写循环后调用buff.close() ; BufferedWriter会在关闭时将数据刷新到文件。

虽然问题得到了回答。 我想补充一下缓冲区的工作原理。

每当你尝试使用缓冲区写入文件时,无论你写什么都会被添加到缓冲区。 当缓冲区已满时,内容将写入文件。 这样我们就可以减少硬盘的点击次数,从而提高效率。

如果我们想在没有缓冲区变满的情况下强制写入文件,我们使用flush()方法。