자바 Serializable 객체를 Byte 배열로

자바의 Serializable과 관련된 검색 결과 대부분의 예제들은 파일로 문서 쓰기 혹은 문서로부터 읽기와 관련된 내용이었습니다.

AppMessage라는 serializable 클래스가 있다고 합시다.

이 클래스를 byte[]로서 소켓을 통해 별개의 기기로 전달하고 싶습니다. 기기에서는 전달 받은 byte를 재빌드 할 것이고요.

어떻게 해야 할까요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    전달할 byte를 준비합니다:

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutput out = null;
    try {
      out = new ObjectOutputStream(bos);   
      out.writeObject(yourObject);
      byte[] yourBytes = bos.toByteArray();
      ...
    } finally {
      try {
        if (out != null) {
          out.close();
        }
      } catch (IOException ex) {
        // close에서 발생하는 exception은 무시
      }
      try {
        bos.close();
      } catch (IOException ex) {
        // close에서 발생하는 exception은 무시
      }
    }
    

    전달받은 byte로 객체 생성:

    ByteArrayInputStream bis = new ByteArrayInputStream(yourBytes);
    ObjectInput in = null;
    try {
      in = new ObjectInputStream(bis);
      Object o = in.readObject(); 
      ...
    } finally {
      try {
        bis.close();
      } catch (IOException ex) {
        // close에서 발생하는 exception은 무시
      }
      try {
        if (in != null) {
          in.close();
        }
      } catch (IOException ex) {
        // close에서 발생하는 exception은 무시  }
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.