序列化:java.io.StreamCorruptedException:无效的流头:0AACED00

序列化:java.io.StreamCorruptedException:无效的流头:0AACED00,第1张

序列化:java.io.StreamCorruptedException:无效的流头:0AACED00
 java.io.StreamCorruptedException: invalid stream header: 0AACED00

FileOutputStream.
正如我在上面的评论中提到的那样,这是由于附加到您造成的
ObjectOutputStream
,至少在没有特殊措施的情况下,您无法附加到由编写的流。保持文件
ObjectOutputStream
打开状态,直到你写你想写的对象,然后将其关闭,然后从它反序列化。

注意:我也提到过

while ((object = in.readObect()) != null)

不是有效的对象读取循环。

readObject()
在流的末尾不返回null:throws
EOFException
null
可以在流中的任何地方发生,只要您编写一个。循环的正确形式是:

try{    for (;;)    {        Object object = in.readObject();        // ...    }}catch (EOFException exc){    // end of stream}// other catch blocks ...

注意2:

oos.writeObject(object + "n");

应该只是

oos.writeObject(object);

否则,您将隐式调用

toString()
并毫无意义地追加行终止符,因此的结果
readObject()
将是String而不是原始对象。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5506991.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-13
下一篇2022-12-13

发表评论

登录后才能评论

评论列表(0条)

    保存