ホームページ > Java > &#&チュートリアル > Java 直列化可能オブジェクトをバイト配列に変換したり、その逆に変換したりするにはどうすればよいですか?

Java 直列化可能オブジェクトをバイト配列に変換したり、その逆に変換したりするにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-03 04:52:39
オリジナル
904 人が閲覧しました

How to Convert Java Serializable Objects to Byte Arrays and Back?

Java 直列化可能オブジェクトのバイト配列への変換

Java オブジェクトをネットワーク経由で送信するか、バイナリ形式で保存してバイト配列に変換する必要がある場合不可欠なものになる可能性があります。シリアル化可能なクラス AppMessage があるシナリオを考えてみましょう。 AppMessage インスタンスをソケット経由で別のマシンに送信し、受信したバイトから再構築するには、次の手順に従います。

シリアル化: オブジェクトをバイト配列に変換

  1. ByteArrayOutputStream を準備します: シリアル化されたデータの一時ストレージとして機能する ByteArrayOutputStream を作成します。 object.
  2. ObjectOutputStream: ObjectOutputStream を使用して、オブジェクトを ByteArrayOutputStream に書き込みます。
  3. Flush and Read Bytes: ObjectOutputStream をフラッシュして、すべての値を確実にします。データはバイト バッファに書き込まれ、そこからバイト配列を取得します。 ByteArrayOutputStream.

このプロセスのコード スニペット:

static byte[] serialize(final Object obj) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    try (ObjectOutputStream out = new ObjectOutputStream(bos)) {
        out.writeObject(obj);
        out.flush();
        return bos.toByteArray();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
ログイン後にコピー

逆シリアル化: バイト配列からのオブジェクトの再構築

  1. ByteArrayInputStream: バイト配列を変換して戻します。 ByteArrayInputStream を使用した入力ストリーム。
  2. ObjectInputStream: ByteArrayInputStream から ObjectInputStream を作成して、オブジェクト データを読み取ります。
  3. readObject(): readObject を使用します。 () メソッドはバイトから元のオブジェクトを再構築します。

対応するコード スニペット:

static Object deserialize(byte[] bytes) {
    ByteArrayInputStream bis = new ByteArrayInputStream(bytes);

    try (ObjectInput in = new ObjectInputStream(bis)) {
        return in.readObject();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
ログイン後にコピー

これらのメソッドを適切に配置すると、AppMessage インスタンスなどのシリアル化可能なオブジェクトをネットワーク経由で効率的に送信し、それらをネットワーク上で再構築できます。受信終了。

以上がJava 直列化可能オブジェクトをバイト配列に変換したり、その逆に変換したりするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート