2013-10-31 261 views
0

你好,有人可以幫助我在Java文件中寫入和讀取對象?從文件中讀取/寫入對象

這是我使用的代碼,這讓我這個例外:java.io.NotSerializableException 這裏是我的代碼使用方法:

public void zapisDat() { 
    sez = new SeznamLodi(seznamLodiPC, seznamLodiUser, seznamLodiZasahuHrac, seznamLodiZasahuPC); 
    try { 
     ObjectOutput out = new ObjectOutputStream(
       new FileOutputStream("mujseznam.dat")); 
     out.writeObject(sez); 
     out.close();    // a je to. Jednoduché, že? 
    } catch (IOException e) { 
     System.out.println("Chyba při zápisu souboru : " + e); 
    } 
} 

public void nacteniDat() { 
    try { 
     // Načtení ze souboru 
     File file = new File("mujseznam.dat"); 
     try (ObjectInputStream in = new ObjectInputStream(
       new FileInputStream(file))) { 
      sez = (SeznamLodi) in.readObject(); 
     } 
    } catch (ClassNotFoundException e) { 
     System.out.println("Nemohu najít definici třídy: " + e); 
    } catch (IOException e) { 
     System.out.println("Chyba při čtení souboru : " + e); 
    } 
} 

Thaks任何幫助

+0

你能告訴我們,你的類,它的字段是序列化? –

回答

0

爲了寫ObjectOututStream對象必須正確支持序列化。

閱讀serialization tutorial並使您的類SeznamLodi符合要求。

0

正如錯誤所說,類(對於對象sez)沒有實現Serializable接口。你可以參考java papers知道它是如何工作的。

0

對象應該實現Serializable接口寫入文件。具體實現java.io.serializable。

import java.io.serializable 

class SerializationBox implements Serializable { 
.... 
0

產生這個類可序列化

class SeznamLodi implements java.io.Serializeable 
0

如果SeznamLodi是你自己的,讓Serializable通過它

public class SeznamLodi implements Serializable { 

    } 

閱讀Serialization#Java

1

要使您的對象可序列化,您必須實現Serializable接口,以便指示JVM序列化您自己的實現Serializable接口的類的對象。

您的代碼必須實現Serializable接口的樣子,

public class <class_name> implements Serializable { }