자바 Serializable 객체를 Byte 배열로

조회수 2850회

자바의 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은 무시  }
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)