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