【问题标题】:get nth Object stored in a binary file获取存储在二进制文件中的第 n 个对象
【发布时间】:2018-05-27 23:56:39
【问题描述】:

[Java 9]

在尝试通过序列化将许多对象存储到二进制文件中时,我遇到了一个问题,我无法直接读取第 50 个对象,而我认为解决该问题的最佳方法是遍历文件,然后选择我想要的。这当然是非常低效的,我在想是否有更好的方法来做到这一点。感谢您的帮助!

【问题讨论】:

  • 您是一次序列化一个对象吗?如果是这样,您如何知道第 n 个对象在文件中的哪个位置开始?考虑到您认为效率很重要,您在谈论多少个对象?如果很多,您应该考虑使用数据库,例如NoSQL 存储。
  • 有几种方法可以做到这一点。例如,您可以一次序列化它们,首先在内存中找出长度,然后在文件中的每个序列化对象前面加上对象的长度,这样您就可以快速跳过不需要的对象读。还有其他选择。但是 SO 不是一个很好的网站,可以解决像这样可能有许多非常不同答案的广泛问题。

标签: java serialization deserialization


【解决方案1】:

不,没有更好的方法可以做到这一点。序列化的数据本质上是串行的,不是随机访问的,并且取决于流中较早的数据,当然也取决于流标头。请参阅对象序列化规范的协议部分。

您必须调用readObject() N 次才能获得第 N 个对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多