2016-04-30 17 views
0

Wie liest/schreibt man eine Map, insbesondere eine LinkedHashMap, aus einer Textdatei? Ich habe versucht, die Iterable Schnittstelle zu verwenden, aber das funktioniert nicht, weil ich Map und Iterable nur ein Argument haben kann.Schreibe LinkedHashMap in eine Textdatei?

Karte Code:

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

Ich weiß, dass ich ein Printwriter + BufferedWriter/PrintReader + BufferedReader Objekte zu erstellen haben/Schreiben auf diese Textdatei zu lesen, und dann eine Version des hasNext() -Methode verwenden, um lese bis die Datei endet, ich bin mir einfach nicht sicher wie. Bitte helfen Sie!

EDIT: Ich kann die Serializable-Schnittstelle auch nicht dafür verwenden, weil ich versuche, eine Map in die Textdatei zu schreiben, nicht einzelne Einträge, und es gibt keine Methode indexOf() für Maps.

+0

Sie versuchen gerade, jeden 'Schlüssel, Wert' in eine Textdatei zu schreiben, die durch etwas getrennt ist? – 3kings

+0

Ja, genau das versuche ich. Wenn ich nur die gesamte Map auf die Textdatei drucken könnte, die auch funktionieren würde. –

Antwort

0

Weil Sie versuchen, Ihre gesamte Karte in die Datei zu schreiben und nicht einzelne Einträge könnten Sie writeObject() und readObject() wie folgt verwenden:

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(); 

Hoffnung, das hilft.

Verwandte Themen