Bufferedwriter工作,但文件为空?

new*_*bie 2 java file 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");
        }



}
Run Code Online (Sandbox Code Playgroud)

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

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

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

这可能是什么原因?

ζ--*_*ζ-- 12

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

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

buff.flush();
buff.close();
Run Code Online (Sandbox Code Playgroud)

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

  • 关闭实际上应该在finally块中完成,因为即使循环中发生任何异常,也应该关闭文件描述.如果使用Java 7,则应首选try-with-resources语句. (4认同)