2016-04-30 6 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() для прочитайте, пока файл не закончится, я просто не знаю, как это сделать. Пожалуйста помоги!

EDIT: Я не могу использовать интерфейс Serializable для этого, потому что я пытаюсь написать карту в текстовый файл, а не отдельные записи, и для Maps не существует метода indexOf().

+0

Вы просто пытаетесь написать каждый «Ключ, значение» в текстовый файл, подобный отдельному? – 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(); 

Надеются, что это помогает.