Bufferedwriter works, but file empty?

主宰稳场 提交于 2019-11-27 07:25:46

问题


I have the following code:

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");
        }



}

No, I checked for the contents of myLines, these are correct.

Also, I get the print which prints "done" just as often as I should. The csv is created.

However, if I open it manually, it is empty.

What can be the reason for this?


回答1:


You never flush the buffer, or close the BufferedWriter.

After the for loop, make the following calls:

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

Even with other resources, closing them when done is a good idea.




回答2:


You have to close() the stream after use.
Call buff.close() after write loop; BufferedWriter will flush data to file at close.




回答3:


Though the question is answered . I would like to add how buffer works.

whenever you try to write to a file using buffer,whatever you write gets added to the buffer. When the buffer is full the contents are written to the file . This way we are reducing the number of hits to the hard-drive hence improving the efficency.

If we want to forcefully write to a file without the buffer getting full , we use flush() method.



来源:https://stackoverflow.com/questions/18573998/bufferedwriter-works-but-file-empty

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!