如何在java中读取损坏的序列化对象

时间:2016-10-19 03:01:22

标签: java serialization deserialization

我有一个Person,它有一个Address类列表。 我能够通过序列化将大约50个Person实例保存到文件中。 我期待着一百个。另一半由于系统崩溃而损坏。 现在,当我读取文件。我可以将大约50个文件反序列化为Person实例。另外50个显示[B不能投入人物....

我的问题是如何读回这个损坏文件的信息,特别是每个人的地址数据。

请您提出解决问题的方法。谢谢!

1 个答案:

答案 0 :(得分:2)

没有好的解决方案。

这就是不可取使用Java对象序列化作为数据库替代品的原因。你可能通过不充分测试你的应用程序而不是定期备份等来解决这个问题。

然而:

  

现在我读了这些文件。我可以将大约50个文件反序列化为Person实例。另外50个显示[B不能投入人物....

这听起来不像是崩溃的结果。相反,听起来你错误地序列化byte[]个对象而不是Person个对象。 (“[B”是byte[]的内部类型名称。)除非那些byte[]个对象以某种方式包含序列化的Person个对象......否则你被搞砸了。

(如果信息实际上不存在,则无法从文件中恢复信息。)