java.util.zip.Deflater의 deflate 메소드를 사용하는 경우, byte []를 인수로서 지정해야한다. byte []를 어느 정도 초기화 할 필요가 있을까? 압축 된 데이터가 압축되지 않은 데이터보다 작을 것이라는 보장은 없습니다. 내가 입력해야 할 특정 %가 있습니까? 는 현재 내가 여전히 출력에 이상이 있는지 finished
전화, deflate
를 호출 한 후 입력압축 출력의 Java 바이트 수 byteArray
5
A
답변
8
로 두 배 큰합니다. 예를 들면 : 당신은 그냥 당신이있는 ByteArrayOutputStream를 사용할 수있는 메모리 바이트를 모두 수집 할 경우
byte[] buffer = new byte[BUFFER_SIZE];
while (!deflater.finished()) {
int n = deflater.deflate(buffer);
// deal with the n bytes in out here
}
. 예 :
byte[] buffer = new byte[BUFFER_SIZE];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while (!deflater.finished()) {
int n = deflater.deflate(buffer);
baos.write(buffer, 0, n);
}
return baos.toByteArray();
6
Java에서 클래스를 "deflater"로 잘못 입력하는 이유는 무엇입니까? 단어는 "deflator"입니다. 이런! 미안, 내 가슴에서 그걸 가져와야 해.
앞서 언급 한대로 압축 결과를 모두 얻을 때까지 deflate
을 계속 호출하는 것이 좋습니다. 그러나 이 실제로 인 경우 한 번의 호출로이 작업을 수행하려는 경우 수축이 데이터를 확장 할 수있는 양에 제한이 있습니다. zlib에는 불행히도 Java가 사용 가능하지 않으므로 해당 상한을 제공하는 deflateBound()
이라는 함수가 있습니다.
complen = sourceLen +
((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
관련 문제
- 1. AS3 - 압축 ByteArray
- 2. 바이트 대 파이썬 2.6과 3에서 bytearray
- 3. 바이트 압축 배열
- 4. .net 변환 bytearray double []
- 5. EF 4.1 SQL 압축 바이트
- 6. GZipStream 압축 문제 (분실 바이트)
- 7. 플렉스 코어 ByteArray Image
- 8. bytearray in Python
- 9. Java 압축 유틸리티가 있습니까
- 10. Java - 다르게 압축 된 파일의 압축 해제
- 11. JPEG로 압축 된 바이트 스트림에 jpeglib 사용
- 12. PDF 압축 java
- 13. 경량 Java 압축 라이브러리?
- 14. Java 소켓으로 바이트 배열 보내기
- 15. Java 바이트 코드 컴파일
- 16. 바이트 x에서 바이트 y까지의 Java readFile
- 17. Java 기괴한 프로그램 출력의 시프트 연산자
- 18. JAVA - 바이트 배열
- 19. Java 바이트 코드 이해
- 20. Java : 바이트 배열을 바이트 배열로 변환
- 21. PDF, Java with barcode4j 압축
- 22. bytearray from webcam
- 23. Java - 웹 사이트의 파일 압축?
- 24. 다음과 같이 내가 ByteArray 클래스를 확장 한 확장 된 ByteArray
- 25. bytearray to string
- 26. URLRequest를 통해 bytearray 업로드하기
- 27. 압축 - java.lang.OutOfMemoryError : Java 힙 공간
- 28. JNI BYTEARRAY 통과 도움
- 29. Java ImageIO를 사용하여 Tiff 압축
- 30. Flex ByteArray 데이터 필드
그리고 당신은 하나 개의 거대한 바이트 배열로 끝날하려는 경우, 다음에 추가 루프 외부의'ByteArrayOutputStream'을 만들 : 당신은 그냥 여기 복사 관련 라인, 그 함수에서 바인딩 보수적 인을 사용할 수 있습니다 각각의 반복은'bos.append (out, 0, n)' –
으로 해답을 주셔서 감사합니다. 나는 그것을 얻지 못한다 ... 전체 입력이 압축 될 때까지 deflate()를 여러 번 호출해야 하는가? 그리고 BUFFER_SIZE를 어떻게 설정해야합니까? 튜토리얼 또는 이와 유사한 내용이 설명되어 있습니까? 감사합니다. – Clox
저는 경쟁 조건이 있다고 생각합니다. 정확히 제가 게시 한 두 번째 예제 코드 조각이 원인이됩니다. :-) –