簡體   English   中英

從文件讀取/寫入對象

[英]Reading/writing object from file

您好,有人可以幫助我編寫和讀取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);
    }
}

感謝任何幫助

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

您的代碼必須實現Serializable接口,如下所示:

public class < class_name > implements Serializable { } 

為了將Object寫入ObjectOututStream,它必須正確支持序列化。

閱讀序列化教程 ,並使您的SeznamLodi類符合要求。

正如錯誤所言,類(對於對象sez)未實現Serializable接口。 您可以參考Java論文以了解其工作原理。

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

import java.io.serializable

class SerializationBox implements Serializable {
....

使此類可序列化

class SeznamLodi implements java.io.Serializeable

如果SeznamLodi是您自己的,請將其Serializable SeznamLodi

  public class SeznamLodi implements Serializable {

  }

閱讀有關Serialization#Java的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM