我有一個包含序列化 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
提交
取消