我有一个文件,该文件包含序列化的HashMap,该序列包含MyObject类型的元素:
�� sr java.util.HashMap���`� F
loadFactorI thresholdxp?@ w t (a54d88e06612d820bc3be72877c74f257b561b19sr com.myproject.MyObject C�m�I�/ I partitionL hashcodet Ljava/lang/String;L idt Ljava/lang/Long;L offsetq ~ L timestampq ~ L topicq ~ xp q ~ ppppx
现在,我还有其他一些MyObject对象想要添加到该地图中。但是,我不想先将地图读取并反序列化回内存中,然后对其进行更新,然后将整个更新后的地图写回到文件中。如何以一种更有效的方式更新文件中的序列化?
答案 0 :(得分:5)
如何以一种更有效的方式更新文件中的序列化?
基本上是通过反向工程将对象序列化为二进制表示形式时Java使用的二进制协议。这样一来,您就可以了解该二进制Blob中的哪些元素需要以哪种方式进行更新。
其他人已经这样做了,例如,参见here。
其他任何事情都可以。您坐下来编写代码。
或者您编写几行代码来读取现有文件,并使用该映射 plus 在那里写一个新文件,并在其中添加所需的其他对象。
您知道,效率取决于观点:
仅的正当理由(我能想到)为什么这样做:确切地了解以下内容:二进制数据格式以及如何修补内容。但是即使那样,也可能有比“花费更多时间重新实现Java二进制序列化”更多的见解(在现实世界中具有实际价值)为您提供了更多的见解。