1. ホーム

[解決済み】Javaのシリアライズ可能なオブジェクトをバイト配列に変換する。

2022-03-27 03:02:11

質問

シリアライズ可能なクラスがあるとします。 AppMessage .

として送信したいと思います。 byte[] をソケット経由で別のマシンに送信し、そこで受信したバイトから再構築されます。

どうすれば実現できるのでしょうか?

どのように解決するのですか?

送信するバイト配列を用意する。

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = null;
try {
  out = new ObjectOutputStream(bos);   
  out.writeObject(yourObject);
  out.flush();
  byte[] yourBytes = bos.toByteArray();
  ...
} finally {
  try {
    bos.close();
  } catch (IOException ex) {
    // ignore close exception
  }
}

バイト配列からオブジェクトを作成します。

ByteArrayInputStream bis = new ByteArrayInputStream(yourBytes);
ObjectInput in = null;
try {
  in = new ObjectInputStream(bis);
  Object o = in.readObject(); 
  ...
} finally {
  try {
    if (in != null) {
      in.close();
    }
  } catch (IOException ex) {
    // ignore close exception
  }
}