기존 객체 스트림에 추가
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!