> Java > java지도 시간 > Java에서 기존 ObjectOutputStream에 추가할 수 있나요?

Java에서 기존 ObjectOutputStream에 추가할 수 있나요?

Patricia Arquette
풀어 주다: 2024-12-16 20:19:17
원래의
147명이 탐색했습니다.

Can You Append to Existing ObjectOutputStreams in Java?

기존 객체 스트림에 추가

ObjectOutputStream에 추가하는 것이 가능한지 의문이 생깁니다. 읽는 동안 객체 목록을 추가하려는 시도가 간헐적으로 실패하여 java.io.StreamCorruptedException이 발생합니다.

일반적인 사용법은 다음과 같습니다.

FileOutputStream fos = new FileOutputStream
           (preferences.getAppDataLocation() + "history" , true);
ObjectOutputStream out = new ObjectOutputStream(fos);

out.writeObject( new Stuff(stuff) );
out.close();
로그인 후 복사

그 후 읽는 동안:

FileInputStream fis = new FileInputStream
        ( preferences.getAppDataLocation() + "history");
ObjectInputStream in = new ObjectInputStream(fis);    

try{
    while(true)
        history.add((Stuff) in.readObject());
}catch( Exception e ) { 
    System.out.println( e.toString() );
}
로그인 후 복사

ObjectOutputStream을 하위 클래스로 분류하고 writeStreamHeader 메서드를 재정의하면 다음을 제공합니다. 해결 방법:

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 line added after another question
    // showed a problem with the original
    reset();
  }

}
로그인 후 복사

기록 파일이 있는 경우 추가 가능한 스트림을 인스턴스화하고(헤더 없이 추가), 존재하지 않는 경우 원본 스트림을 인스턴스화합니다(헤더를 사용하여 생성).

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿