2017-05-05 3 views
1

여기서 압축 바이트 배열은 대체로 사용되면GZIPOutputStream을 플러시하고 나서 ByteArrayOutputStream을 다시 설정하는 것이 안전합니까?

ByteArrayOutputStream baos = new ByteArrayOutputStream(bufSize); 
GZIPOutputStream gzos = new GZIPOutputStream1(baos); 
gzos.write(...) 
... 
gzos.write(...) 
... 
// Would the content get flushed properly? 
gzos.flush() 
byte[] bytes = baos.toByteArray(); 
// Use bytes wherever you want 
... 
// Would this reset things for gzos? 
baos.reset() 
gzos.write(...) 
... 
gzos.write(...) 
... 
bytes = baos.toByteArray(); 
... 

그래서, I 스트림을 재설정 할 일례를 코드이다. 나는 두 가지 염려가있다. GZIPOutputStream의 flush 메서드가 항상 내용을 플러시하지 않는다고 나는 어딘가에서 읽었습니까? Java 7에서도 여전히 사실입니까? 문제가 해결되면 GZIPOutputStream 개체의 값을 다시 설정할 수 있도록 ByteArrayOutputStream 개체를 다시 호출해야합니까?

답변

1

GZIPOutputStream의 flush 메소드가 항상 내용을 플러시하지 않는다고 읽었습니까?

어떤 종류의 생성자를 사용하는지에 따라 다릅니다. true에서 boolean syncFlush을 전달하는 압축기를 생성하면 flush() 호출은 각각 압축기와 출력 스트림을 모두 플러시합니다. false 인 경우 출력 strem 만 플러시합니다.

Java 7에서도 마찬가지입니까?

Java 6에서 발생한 동작입니다.이 syncFlush 매개 변수는 Java 7부터 사용할 수 있습니다. 물론 Java 8입니다.

ByteArrayOutputStream 개체의 재설정을 호출하여 GZIPOutputStream 개체를 재설정 할 수 있습니까?

네, 그렇게 보입니다.

+0

매우 유용합니다. 감사! – pythonic

관련 문제