2015-02-23 4 views
-1

Я сериализую хэш-карту в своем Java-коде и записываю ее в файл. При десериализации файл содержит более одного значения, но возвращает только верхнюю часть самой пары ключей и значений. Может ли кто-нибудь сказать мне, почему? Вот мой Java-код для десериализации:Deserialization hashmap in java

public static void main(String[] args) throws IOException, ClassNotFoundException { 

    HashMap<String, String> data = new HashMap<Integer, String>(); 
    ObjectInputStream in = new ObjectInputStream(new FileInputStream("F:\\f.txt")); 

    data = (HashMap<String, String>) in.readObject(); 

    for (Map.Entry entry : data.entrySet()) { 
     System.out.println("key" + entry.getKey()); 
     System.out.println("value" + entry.getValue()); 
    } 

} 

Вот мой код сериализации

public class SerializeObject implements Serializable { 


    public static void main(String[] args) throws IOException, ClassNotFoundException 
    { 
      HashMap<String,String> map = new HashMap<String,String>(); 
      map.put("Monday","first"); 
      map.put("Tuesday","Second"); 
      map.put("Wednesday","Third"); 
      FileOutputStream fout=new FileOutputStream("F:\\f.txt",true); 
      ObjectOutputStream out=new ObjectOutputStream(fout); 
      out.writeObject(map); 
      out.flush(); 

     } 
    } 

После десериализации он возвращает только понедельник и первый

+0

Какой код вы используете для сериализации? Каково содержимое f.txt? Исправьте форматирование. –

+0

Выполнение десериализации после сериализации работает отлично ... Также ключ вашей карты переключается с String на Integer ?! –

+0

Привет ... извините, это моя ошибка – wazza

ответ

0

Вы должны закрыть потоки. out.flush() может быть недостаточно, чтобы все остальные данные записывались на диск. Простой способ обеспечить, чтобы использовать try-with-resource:

public static void main(String[] args) throws IOException, ClassNotFoundException 
{ 
     HashMap<String,String> map = new HashMap<String,String>(); 
     map.put("Monday","first"); 
     map.put("Tuesday","Second"); 
     map.put("Wednesday","Third"); 
     try (
      FileOutputStream fout=new FileOutputStream("F:\\f.txt",true); 
      ObjectOutputStream out=new ObjectOutputStream(fout); ) 
     { 
      out.writeObject(map); 
     } 
}