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);
    }
}

谢谢你的帮助

4

6 回答 6

1

要使您的对象可序列化,那么您必须实现 Serializable 接口,以便指示 JVM 序列化您自己的实现 Serializable 接口的类的对象。

你的代码必须实现 Serializable 接口看起来像,

public class < class_name > implements Serializable { } 
于 2013-10-31T11:46:46.727 回答
0

为了将对象写入 ObjectOututStream,它必须正确支持序列化。

阅读序列化教程,让你的类SeznamLodi符合要求。

于 2013-10-31T11:08:13.513 回答
0

正如错误所说,类(对于对象 sez)没有实现 Serializable 接口。你可以参考java论文来了解它是如何工作的。

于 2013-10-31T11:08:14.220 回答
0

该对象应该实现要写入文件的 Serializable 接口。具体实现java.io.serializable。

import java.io.serializable

class SerializationBox implements Serializable {
....
于 2013-10-31T11:09:12.907 回答
0

使这个类可序列化

class SeznamLodi implements java.io.Serializeable
于 2013-10-31T11:09:36.243 回答
0

如果SeznamLodi是您自己的,请Serializable通过

  public class SeznamLodi implements Serializable {

  }

阅读有关序列化#Java的信息。

于 2013-10-31T11:09:53.183 回答