Java - 将树形图写入文本文件

时间:2015-05-26 22:29:48

标签: java treemap filewriter bufferedwriter

我有一个名为' sortMap'的树形图。其中包含一些具有相应值的键。我试图将树图写入文本文件,如下所示。

String aggFileName = "agg-"+String.valueOf("06.txt");
FileWriter fstream = new FileWriter(aggFileName);
BufferedWriter out = new BufferedWriter(fstream);

for (Map.Entry<String, String> entry : sortMap.entrySet()) {
     System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); //this statement prints out my keys and values
     out.write(entry.getKey() + "\t" + entry.getValue());
     System.out.println("Done");

我面临的问题是我最终得到一个空白文件,尽管我的代码中的print语句显示我已成功迭代树形图。我能做错什么?

1 个答案:

答案 0 :(得分:1)

写入文件时,需要在完成所有写入操作后刷新并关闭文件。通常只调用close()就足够了,但如果你想在每次迭代结束时在文件中提供更改,你需要在IO对象上调用flush()函数。

大多数IO对象都有一个缓冲区,它是一个临时空间,用于存储写入它们的任何值。刷新此缓冲区后,它们会将内容写入正在使用的流中。您的代码应如下所示:

String aggFileName = "agg-"+String.valueOf("06.txt");
FileWriter fstream = new FileWriter(aggFileName);
BufferedWriter out = new BufferedWriter(fstream);

for (Map.Entry<String, String> entry : sortMap.entrySet()) {
     System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); //this statement prints out my keys and values
     out.write(entry.getKey() + "\t" + entry.getValue());
     System.out.println("Done");
     out.flush();   // Flush the buffer and write all changes to the disk
 }

out.close();    // Close the file