検索

ホームページ  >  に質問  >  本文

Java でのシリアル化と逆シリアル化について

1. 次のコードは、ファイル 2.log をシリアル化し、2.txt に保存します。 リーリー

逆シリアル化:

ObjectInputStream() を使用します
FileInputStream fis = new FileInputStream("D:/2.txt");
ObjectInputStream oin = new ObjectInputStream(fis);
oin.readObject( );
エラー: スレッド "メイン" java.io.StreamCorruptedException: 無効なストリーム ヘッダー: 3139322E
これに対処するにはどうすればよいですか?
ファイルが大きい場合、読み取り時にキャッシュを追加するにはどうすればよいですか?ダニエルが私を啓発してくれることを願っています、xiexie

PHP中文网PHP中文网2768日前977

全員に返信(1)返信します

  • 漂亮男人

    漂亮男人2017-05-27 17:43:47

    あなたの問題は、ObjectInputStream によって読み取られるコンテンツが ObjectOutputStream によって書き込まれることによって生成される必要があるためです。ファイルの内容は、Java シリアル化の仕様要件に準拠する必要があります。自分で作成したバイト配列は使用できません。


    protobuf は、XML と同様に、構造化データをシリアル化するための柔軟で効率的かつ自動の方法ですが、より小さく、より高速で、よりシンプルです。独自のデータ構造を定義し、コード ジェネレーターによって生成されたコードを使用して、このデータ構造の読み取りと書き込みを行うことができます。プログラムを再デプロイせずにデータ構造を更新することもできます。

    サイズでも、シリアル化と逆シリアル化の効率でも、基本的には JAVA に付属するシリアル化よりも数倍優れていますが、データが大きいほど、利点は明らかです。操作が面倒

    返事
    0
  • キャンセル返事