【发布时间】:2013-12-22 02:05:18
【问题描述】:
如果我有一个包含嵌套类的类并对其进行序列化,我如何从其中一个嵌套类中读取数据?
我知道如何像这样从主类中读取:
FileInputStream fis = new FileInputStream(eventsFile);
ObjectInputStream ois = new ObjectInputStream(fis);
GreenhouseControls gc = (GreenhouseControls) ois.readObject();
然后我尝试从这样的嵌套类之一中读取:
WindowMalfunction ce = (WindowMalfunction)ois.readObject();
我得到了这个例外:
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at greenhouse.GreenhouseControls$Restore.action(GreenhouseControls.java:348)
at other.Controller.run(Controller.java:45)
at greenhouse.GreenhouseControls.main(GreenhouseControls.java:555)
当我序列化 GreenhouseControls 类时,我是这样做的:
public void saveState() {
try{
// Serialize data object to a file
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("dump.out"));
out.writeObject(GreenhouseControls.this);
out.close();
} catch (IOException e) {
}
}
【问题讨论】:
-
您将一个对象写入流,然后将其读回。然后,您尝试读取其他内容并关闭了流。
-
你写了一个对象,你读了一个对象,然后你试图读另一个对象,但它不存在。是什么让你认为它是?该软件按设计运行。
标签: java serialization deserialization