異邦人になってみた~上海の人 

読者です 読者をやめる 読者になる 読者になる

異邦人になってみた~上海の人 

上海在住です。中国時代劇をよく見ています、中国旅行の事、weiboやQQの設定、一眼レフカメラの写真掲載、上海での日々の生活情報を書いています

 記事一覧表示
スポンサーリンク

JAVAでオブジェクト(Class)をバイト配列に変換する方法

JAVA プログラム


最近物覚えが悪くて。。。備忘録です。
オブジェクト(Class)をバイト配列に変換する方法
自分でソースを書くのが面倒なので、シリアライズするのが一番楽なんですが、
ObjectOutputStream(ObjectInputStream)って単独でNewできないんですよね。
Inputストリームのインスタンスを作成するのって結構めんどくさい。
ファイルを使えばできますが。。。
シリアライズするときに、例えばDBに入れたいときなど、
ファイルを使いたくない場合、ByteArrayOutputStream(ByteArrayInputStream)を使えばいいようです

SendMessageと言うものを適当に作って試してみます。

//オブジェクトをBYTE配列に変換(class SendMessage)
public static byte getByteObject(SendMessage sendMsg)
{
  byte
retObject = null;
  try {
      ByteArrayOutputStream byteos = new ByteArrayOutputStream();
      ObjectOutputStream objos = new ObjectOutputStream(byteos);
      objos.writeObject(sendMsg);
      objos.close();
      byteos.close();
      retObject = byteos.toByteArray();
    } catch (IOException ex) {
      // TODO 自動生成された catch ブロック
      ex.printStackTrace();
    }

  return retObject;
}

//BYTE配列をオブジェクトに変換
public static SendMessage createSendMessageObject(byte[] objByte)
{
  SendMessage sendMsg = null;
  try {
      ByteArrayInputStream byteis = new ByteArrayInputStream(objByte);
      ObjectInputStream objis = new ObjectInputStream(byteis);
      sendMsg = (SendMessage) objis.readObject();
      byteis.close();
      objis.close();
  } catch (IOException | ClassNotFoundException e) {
      // TODO 自動生成された catch ブロック
      e.printStackTrace();
  }
  return sendMsg;

}