在Java中反序列化对象

时间:2016-04-28 18:10:28

标签: java serialization

假设我有一个包含许多已经序列化的对象的大文件(这很容易)。当我去反序列化时,我需要能够随机访问文件中的对象。我能想到的唯一方法是将文件指针存储到每个对象。

基本上我最终会得到一个大型的序列化对象文件,当我只检索一个对象时,不希望反序列化整个文件。

有人能指出我在这个方向上正确的方向吗?

2 个答案:

答案 0 :(得分:1)

你不能。序列化由于某种原因被称为序列化。它是连续的。随机访问对象流将无法工作,原因有多种,包括流标题,对象句柄......

答案 1 :(得分:0)

直接序列化绝不是您想要的解决方案。 名称的serial部分意味着对象被线性写入ObjectOutputStream

序列化格式众所周知, 这是java 6序列化格式的link

您有几种选择:

  1. 反序列化整个文件并从那里开始。
  2. 编写代码以读取序列化文件并生成索引。 甚至可能将索引存储在一个文件中以备将来使用。
  3. 放弃序列化到文件并将对象存储在数据库中。