'직렬화'장 끝에있는 연습 문제에서 제공 한 프로그램을 사용해 보았습니다..txt 파일에 개체 추가
이 프로그램에서는 클래스 인 Name 및 Address 유형의 데이터 멤버 두 개만 캡슐화하는 클래스 Person을 선언해야합니다. 그런 다음 키보드에서 일련의 이름과 주소를 가져 와서 개체를 만들고 파일에 써야합니다. 그러나 FILE ALREADY EXISTS가 있으면 기존 파일에 개체가 추가되어야합니다. 내 프로그램은 처음으로 완벽하게 실행하지만 첨부 된 기록을 다시 읽으려고 할 때 두 번째로, 나는 내이 연구의 비트가 발견 않았다
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1374)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at Trial.main(Trial.java:66)
예외를 얻을 StreamHeader이 할 수있는 그 오직 한 번만 쓰여지고 추가는 부패됩니다. 주변의 경로는 무엇입니까?
개체 작성 코드는 다음과 같습니다
try(ObjectOutputStream stream = new ObjectOutputStream(new BufferedOutputStream(Files.newOutputStream(filePath,WRITE,CREATE,APPEND)))) {
for(int i = 0;i<name.length;i++) {
Person aPerson = new Person(name[i],address[i]);
System.out.println(aPerson);
stream.writeObject(aPerson);
stream.reset();
aPerson = null;
}
System.out.println("Writing Complete");
확장자'.txt'는 파일에 사람이 읽을 수있는 텍스트가 들어 있음을 나타냅니다. 객체 스트림은 바이너리입니다. –
직렬화가 텍스트를 생성하지 않습니다. 텍스트 파일에 오브젝트를 추가하지 않고'.txt' 파일 이름 확장자를 사용하지 않아야합니다. – EJP