>Java >java지도 시간 >Java 직렬화 가능 객체를 바이트 배열로 변환하거나 그 반대로 변환하는 방법은 무엇입니까?

Java 직렬화 가능 객체를 바이트 배열로 변환하거나 그 반대로 변환하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-03 04:52:39920검색

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

Java 직렬화 가능 객체를 바이트 배열로 변환

Java 객체를 네트워크를 통해 전송하거나 바이너리 형식으로 저장해야 하는 상황에서 바이트 배열로 변환 필수적일 수 있습니다. 직렬화 가능한 클래스 AppMessage가 있는 시나리오를 고려해 보겠습니다. 소켓을 통해 AppMessage 인스턴스를 다른 컴퓨터로 보내고 수신된 바이트에서 재구성하려면 다음 단계를 수행하면 됩니다.

직렬화: 객체를 바이트 배열로 변환

  1. ByteArrayOutputStream 준비: 직렬화된 데이터의 임시 저장소 역할을 할 ByteArrayOutputStream을 만듭니다. object.
  2. ObjectOutputStream: ObjectOutputStream을 사용하여 객체를 ByteArrayOutputStream에 씁니다.
  3. 바이트 플러시 및 읽기: 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를 사용합니다. () 바이트에서 원래 객체를 재구성하는 메서드 stream.

해당 코드 조각:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.