我有一个包含序列化 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 对象要添加到该地图。但是,我不想先读取地图并将其反序列化回内存,然后更新它,然后将整个更新的地图写回文件。如何以更有效的方式更新文件中的序列化?
1 回答
MYYA
TA贡献1868条经验 获得超4个赞
如何以更有效的方式更新文件中的序列化?
基本上是通过对 Java 在将对象序列化为二进制表示形式时使用的二进制协议进行逆向工程。这将使您能够了解该二进制 blob 中的哪些元素需要以哪种方式更新。
其他人已经这样做了,例如,请参见此处。
其他任何事情都只是工作。你坐下来写代码。
或者你写几行代码读取现有文件,然后写出一个新文件,其中包含该地图以及你需要的其他对象。
你看,效率取决于角度:
您是否认为使用二进制序列化对象对文件进行单次更新时间紧迫,以至于需要通过手动“修补”该二进制文件来完成
您认为花费数小时和数小时来学习底层二进制格式以正确更新其内容是否更有效?
这样做的唯一正当理由(我能想到):学习这些东西:二进制数据格式,以及如何修补内容。但即使那样,也可能有“更好”的分配给你更多的见解(在现实世界中具有真正的价值),而不是……花时间重新实现 Java 二进制序列化。
添加回答
举报
0/150
提交
取消