Java—将树映射写入文本文件

Java—将树映射写入文本文件,java,treemap,filewriter,bufferedwriter,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> ent

我有一个名为“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");
String aggFileName=“agg-”+String.valueOf(“06.txt”);
FileWriter fstream=新的FileWriter(文件名);
BufferedWriter out=新的BufferedWriter(fstream);
对于(Map.Entry:sortMap.entrySet()){
System.out.println(“Key=“+entry.getKey()+”,Value=“+entry.getValue());//此语句打印出我的键和值
out.write(entry.getKey()+“\t”+entry.getValue());
系统输出打印项次(“完成”);

我所面临的问题是,虽然代码中的print语句表明我正在成功地迭代树映射,但我最终得到的是一个空白文件。我可能做错了什么?

在写入文件时,需要在所有写入操作完成后刷新并关闭文件。大部分情况下,只需调用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
String aggFileName=“agg-”+String.valueOf(“06.txt”);
FileWriter fstream=新的FileWriter(文件名);
BufferedWriter out=新的BufferedWriter(fstream);
对于(Map.Entry:sortMap.entrySet()){
System.out.println(“Key=“+entry.getKey()+”,Value=“+entry.getValue());//此语句打印出我的键和值
out.write(entry.getKey()+“\t”+entry.getValue());
系统输出打印项次(“完成”);
out.flush();//刷新缓冲区并将所有更改写入磁盘
}
out.close();//关闭文件

是否关闭文件?是否对“out”对象调用flush()方法?@Hank在最后添加out.close()语句时出现以下异常:线程“main”java.io.IOException:Stream中的异常closed@M2X添加out.flush()语句为我做到了这一点。flush()函数的具体功能是什么?谢谢。
close()
意味着
flush()
,由于资源泄漏,您实际上希望使用它来解决问题。另外,请查看“尝试使用资源”模式以自动关闭您的流。