Saffie:
私はタイプMyObjectにの要素を含むシリアル化されたHashMapを含むファイルを持っています:
�� 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にオブジェクトを持っています。しかし、私が最初に読んでもらいたいとメモリにマップの背中をデシリアライズし、それを更新して、ファイルに全体の更新された地図背中を書きいけません。どのようにして、より効率的な方法でファイルにシリアライズを更新しますか?
GhostCat敬礼モニカC.:
どのようにして、より効率的な方法でファイルにシリアライズを更新しますか?
彼らのバイナリ表現にオブジェクトをシリアル化するとき、Javaが使用することを基本的にリバースエンジニアリングによってバイナリプロトコル。それはどのように更新する必要があるだろうというバイナリブロブ内のどの要素を理解することができますでしょう。
他の人々はすでに、見ることを行っている、ここで例えば。
それ以外はただの仕事です。あなたは座ってコードを書きます。
それとも、既存のファイルを読み込む数行のコードを書き、そのマップを使用して新しいファイルを書き出すプラスあなたがそこに必要な他のオブジェクトを。
あなたは効率が視点に依存し、以下を参照してください。
- あなたは思います、単一のバイナリシリアライズされたオブジェクトを使用してファイルの更新は時間ので、手動でそのバイナリファイルを「パッチ適用」によって行われる必要があることが重要です
- あなたは正しくその内容を更新するために、基礎となるバイナリ形式を学ぶために時間と時間を過ごすために、より効率的であると思いますか?
唯一のパッチコンテンツにバイナリデータ形式、および方法:正当な理由(私は考えることができる)、なぜそれを行うには:まさにそのようなことを学ぶこと。しかし、その後もあなたよりも...あなたの時間を再実装するJavaバイナリシリアルを費やす(現実世界で実際の値の)多くの洞察力を与える「より良い」の割り当てがあるかもしれません。