我正在使用 ObjectOutputStream 创建序列化对象的文件。然后,我使用 ObjectInputStream 和 readObject() 方法将对象从文件中取出。
第一次效果很好。这意味着如果文件不存在并且我打开它然后附加任意数量的对象,我可以打开 ObjectInputStream 对象并访问所有对象。
但是,如果我随后打开同一个文件(使用 append 选项)并添加更多对象,ObjectInputStream 对象会收到 java.io.StreamCorruptedException: "invalid type code: AC" 错误,新对象应该从哪里开始。
有没有其他人遇到过这个?我什至回到了 Deitel 书中的一些基本教科书示例,但仍然遇到同样的错误。
编辑:我发现了这一点 - 一旦序列化流关闭并以附加模式重新打开,您可能无法附加到序列化流的末尾。写入似乎可以工作,但是当您稍后再读取文件时,您将收到 java.io.StreamCorruptedException。在“ http://mindprod.com/jgloss/gotchas.html#SERIALIZATION ”