1. 다음 코드는 2.log 파일을 직렬화하여 2.txt
에 저장합니다. 으아악Deserialization:
ObjectInputStream() 사용
FileInputStream fis = new FileInputStream("D:/2.txt");
ObjectInputStream oin = new ObjectInputStream(fis);
oin.readObject();
오류: 스레드 "main에서 예외가 발생했습니다. " java.io.StreamCorruptedException: 잘못된 스트림 헤더: 3139322E
어떻게 처리하나요?
파일이 큰 경우 읽을 때 캐시를 추가하는 방법은 무엇인가요? 다니엘이 깨달아줬으면 좋겠어 씨엑시
漂亮男人2017-05-27 17:43:47
문제는 ObjectInputStream으로 읽은 내용을 ObjectOutputStream으로 작성하여 생성해야 하기 때문입니다. 파일의 내용은 Java 직렬화의 사양 요구 사항을 준수해야 합니다. 직접 만든 바이트 배열은 사용할 수 없습니다.
protobuf는 XML과 마찬가지로 구조화된 데이터를 직렬화하는 유연하고 효율적이며 자동적인 방법이지만 더 작고 빠르며 간단합니다. 자신만의 데이터 구조를 정의한 다음 코드 생성기가 생성한 코드를 사용하여 이 데이터 구조를 읽고 쓸 수 있습니다. 프로그램을 재배포하지 않고도 데이터 구조를 업데이트할 수도 있습니다.
크기든 직렬화든 역직렬화 효율성이든 기본적으로 JAVA에서 제공하는 직렬화보다 몇 배는 더 좋지만, 단점은 조금 더 분명합니다. 조작하기 귀찮아