0
int[] myIntArray; 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024); 
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new DeflaterOutputStream(byteArrayOutputStream)); 
objectOutputStream.writeObject(myIntArray); 

이제 ObjectOutputStream은 개체를 받아서 직접 직렬화합니다. DeflaterOutputStream은 직렬화 된 결과를 압축 한 다음 압축 된 결과를 ByteArrayOutputStream개체 역 직렬화 - 직렬화 된 개체에서 int 배열을 가져 오는 것

에 저장할 수 있습니다. 누군가가 원래의 int 배열을 역 직렬화하고 다시 가져 오는 방법을 말해 줄 수 있습니까? Plz 코딩을 공유 하시겠습니까?

답변

1
objectOutputStream.close(); 
byte[] serialized = byteArrayOutputStream.getBytes(); 

// and then read back using symmetric constructs as when writing, but using 
// input streams instead of output streams: 

ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(serialized); 
ObjectInputStream objectInputStream = 
    new ObjectInputStream(new InflaterInputStream(byteArrayInputStream)); 
int[] myDesererializedIntArray = (int[]) objectInputStream.readObject(); 
+0

바이트로 변환하기 전에 스트림을 닫거나 종료해야 할 수도 있습니다. 내 대답을 편집 할게. –

+0

여기에 전체 코드를 확인하십시오. http://stackoverflow.com/questions/16321507/java-deserialization-error-invalid-stream-header –

+0

OK. 나는 마침내 문제를 발견했다. DeflaterInputStream이 아닌 InflaterInputSTream을 사용해야합니다. 죄송합니다 빨리 내 솔루션을 테스트하지 못한. 나는 그것을 성공적으로 테스트했다. –