我有下面的代码到我的数据序列化到一个文件:Java序列化问题
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(chunk);
out.flush();
我用下面写着:
in = new ObjectInputStream(new FileInputStream(file));
Chunk chunk = (Chunk) in.readObject();
奇怪的是,当我读到的数据,所有成员被设置为默认值,并且我没有收到以前写过的数据。
如果我使用XML变体,一切正常。
e = new XMLEncoder(new FileOutputStream(file));
e.writeObject(chunk);
e.flush();
和
e = new XMLDecoder(new FileInputStream(file));
Chunk chunk = (Chunk) e.readObject();
什么是错的二进制格式?
更新
好吧,我现在得到这样的:组块是在课堂上,其他类与其他类等复杂类。在某些时候,包含的类被声明为Object,并且应该是Serializable。正如史蒂夫所说。
谢谢你的回答。
请发布** Chunk **类的代码 – 2009-10-22 13:52:32
'java.beans.XMLEncoder' /'XMLDecoder'是一个完全独立的机制。 – 2009-10-22 14:08:36