2016-04-30 48 views
0

您如何从/向文本文件读取/写入地图,特别是LinkedHashMap?我尝试过使用Iterable接口,但这不起作用,因为我有Map并且Iterable只能接受一个参数。将LinkedHashMap写入文本文件?

地图代码:

Map<String, String> m1 = new LinkedHashMap<String, String>(16, 0.75f, true); 

m1.put("John Smith", "555-555-5555"); 
m1.put("Jane Smith", "444-444-4444"); 

我知道我必须创建一个PrintWriter +的BufferedWriter/PrintReader + BufferedReader中的对象进行读/写该文本文件,然后使用hasNext的某些版本()方法直到文件结束阅读,我只是不知道如何。请帮忙!

编辑:我无法使用可序列化的接口,因为我试图写一个地图到文本文件,而不是单个的条目,并且没有map的indexOf()方法。

+0

你只是试图将每个'Key,value'写入一个文本文件,就像是用某种东西分开的东西? – 3kings

+0

是的,这就是我想要做的。如果我可以将整个地图打印到文本文件中,那也可以。 –

回答

0

因为你想你的整个地图写入文件,而不是单个条目,你可以使用writeObject()readObject()这样的:

Map<String, String> m1 = new LinkedHashMap<String, String>(16, 0.75f, true); 

m1.put("John Smith", "555-555-5555"); 
m1.put("Jane Smith", "444-444-4444"); 

//Write to file 
FileOutputStream fout = new FileOutputStream("file.out"); 
ObjectOutputStream oos = new ObjectOutputStream(fout); 
oos.writeObject(m1); 

//Read from file 
FileInputStream fin = new FileInputStream("file.out"); 
ObjectInputStream ois = new ObjectInputStream(fin); 
Map<String, String> m2 = (LinkedHashMap<String, String>) ois.readObject(); 

希望这有助于。