繁体   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