2014-11-30 6 views
-1

У меня есть Hashtable<String, String>table содержит данные, которые будут сохранены в текстовом файле, я сохранил его как Object, как таким образом:Как читать сохраненный Hashtable из текстового файла?

Hashtable<String, String>table1=new Hashtable<String,String>(); 
FileOutputStream fos = new FileOutputStream(file); 
ObjectOutputStream oos = new ObjectOutputStream(fos); 
oos.writeObject(table1); 
oos.close(); 
fos.close(); 

Затем я попытался прочитать его как Object как я сохранил его как таким образом :

Hashtable<String, String>table2=new Hashtable<String,String>(); 
FileInputStream reader=new FileInputStream(file);; 
ObjectInputStream buffer=new ObjectInputStream(reader); 
Object obj=buffer.readObject(); 
table2=(Hashtable<String, String>)obj; 
buffer.close(); 
reader.close(); 

но проблема table2 еще null !! Я думаю, что проблема в том, чтобы читать, пожалуйста, какой-нибудь полезный способ чтения?

+3

(1) Не используйте 'Hashtable' в новом коде. Вместо этого используйте 'HashMap'. (2) Если это «String, String», и ключи безопасны для использования в файле свойств, используйте этот формат. Встроенная поддержка чтения/записи и очень удобная для работы. – chrylis

+0

Ваш код отлично работал для меня. Может быть, вы читаете неправильный файл? –

ответ

1

Я предлагаю вам использовать HashMap<String, String> вместо Hashtable<String, String> и программы к интерфейсу Map<String,String>, я также хотел бы предложить вам использовать try-with-resources, наконец, не забудьте сохранить что-то в вашем Collection, прежде чем сериализовать его.

File f = new File(System.getProperty("user.home"), "test.ser"); 
Map<String, String> table1 = new HashMap<>(); 
table1.put("Hello", "world"); 
try (FileOutputStream fos = new FileOutputStream(f); 
     ObjectOutputStream oos = new ObjectOutputStream(fos);) { 
    oos.writeObject(table1); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
try (FileInputStream fis = new FileInputStream(f); 
     ObjectInputStream ois = new ObjectInputStream(fis);) { 
    Map<String, String> table = (Map<String, String>) ois.readObject(); 
    System.out.println(table); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Выход

{Hello=world} 
+0

В чем причина того, что программа OP не работает? – Sid

+0

@Sid Мое предположение - 'Hashtable' было пустым, поэтому OP ничего не получал с помощью итератора. OP точно не показывает нам, где 'table2' по-прежнему' null'. –

+0

О, ладно, это не связано с использованием Hashtable, да? – Sid

Смежные вопросы