>Java >java지도 시간 >Java의 기존 ObjectOutputStream에 객체를 어떻게 추가할 수 있습니까?

Java의 기존 ObjectOutputStream에 객체를 어떻게 추가할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-20 09:06:13567검색

How Can I Append Objects to an Existing ObjectOutputStream in Java?

ObjectOutputStream에 추가: 솔루션

Java에서는 ObjectOutputStream에 추가하는 것이 기본적으로 지원되지 않습니다. 표준 ObjectOutputStream을 사용하여 기존 파일에 추가하려고 하면 읽을 때 StreamCorruptedException이 발생합니다.

이 제한을 극복하려면 ObjectOutputStream을 하위 클래스로 분류하고 writeStreamHeader 메서드를 재정의할 수 있습니다. 수정된 writeStreamHeader는 헤더를 작성하지 않고 대신 초기 객체를 작성할 때 스트림을 재설정해야 합니다.

다음 코드는 AppendingObjectOutputStream 클래스 생성을 보여줍니다.

public class AppendingObjectOutputStream extends ObjectOutputStream {

  public AppendingObjectOutputStream(OutputStream out) throws IOException {
    super(out);
  }

  @Override
  protected void writeStreamHeader() throws IOException {
    // do not write a header, but reset:
    this.reset();
  }

}

이 클래스를 활용하려면, 대상 기록 파일이 존재하는지 확인합니다. 그렇다면 AppendingObjectOutputStream을 인스턴스화하여 헤더를 쓰지 않고 데이터를 추가합니다. 파일이 없으면 표준 ObjectOutputStream을 인스턴스화하여 헤더를 작성합니다.

// Check if history file exists
if (fileExists) {
  // Appendable stream
  ObjectOutputStream out = new AppendingObjectOutputStream(new FileOutputStream(filePath, true));
} else {
  // Standard stream
  ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
}

AppendingObjectOutputStream을 사용하면 기존 기록 파일에 개체를 성공적으로 추가하여 작성된 모든 개체를 읽을 수 있도록 할 수 있습니다. 올바른 순서로.

위 내용은 Java의 기존 ObjectOutputStream에 객체를 어떻게 추가할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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