从文件中读取/写入对象

时间:2013-10-31 11:05:35

标签: java file notserializableexception

你好,有人可以帮我写一下用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);
    }
}

要求任何帮助

6 个答案:

答案 0 :(得分:1)

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

您的代码必须实现Serializable接口,如

public class < class_name > implements Serializable { } 

答案 1 :(得分:0)

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

阅读serialization tutorial并使您的班级SeznamLodi符合要求。

答案 2 :(得分:0)

正如错误所说,类(对象sez)没有实现Serializable接口。您可以参考java papers了解其工作原理。

答案 3 :(得分:0)

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

import java.io.serializable

class SerializationBox implements Serializable {
....

答案 4 :(得分:0)

使此类可序列化

class SeznamLodi implements java.io.Serializeable

答案 5 :(得分:0)

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

创建Serializable
  public class SeznamLodi implements Serializable {

  }

了解Serialization#Java