Deflater — ZLIB 압축 지원 클래스

Deflater — ZLIB 압축 지원 클래스

널리 쓰이는 ZLIB 압축 라이브러리를 사용한 일반 목적의 압축을 지원하는 클래스예요. 바이트 시퀀스를 ZLIB 압축 데이터 형식으로 압축해요.

출처: Java API Reference

본문

public class Deflater extends Object

ZLIB 압축 라이브러리는 원래 PNG 그래픽 표준의 일부로 개발됐고 특허로 보호되지 않아요. 입력 바이트 시퀀스는 setInput() 메서드 중 하나를 통해 바이트 배열 또는 바이트 버퍼로 제공되고, 출력 바이트 시퀀스는 deflate() 메서드에 전달된 출력 배열·버퍼에 기록돼요.

간단한 압축·해제 예시:

String inputString = "blahblahblah";
byte[] input = inputString.getBytes("UTF-8");

byte[] output = new byte[100];
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
int compressedDataLength = compresser.deflate(output);
compresser.end();

주요 생성자

  • Deflater() — 기본 압축 수준으로 새 압축기를 생성해요.
  • Deflater(int level) — 지정된 압축 수준으로 압축기를 생성해요.
  • Deflater(int level, boolean nowrap) — ZLIB 헤더·체크섬 사용 여부를 지정해 생성해요.

주요 메서드

  • setInput(byte[] b) — 압축할 입력 데이터를 설정해요.

  • deflate(byte[] b) — 입력 데이터를 압축하고 압축 바이트를 버퍼에 채워요.

  • finish() — 압축 입력 데이터의 끝을 호출해 추가 데이터를 기대하지 않음을 나타내요.

  • needsInput() — 입력 데이터가 남아 있지 않으면 true를 반환해요.

  • finished() — 압축이 끝났으면 true를 반환해요.

  • getTotalIn() / getTotalOut() — 지금까지 입력·출력된 총 바이트 수를 반환해요.

  • end() — 압축기를 닫고 시스템 리소스를 폐기해요. end() 후 다른 메서드 호출은 NullPointerException을 던져요.

  • 도입 시점(Since): 1.1

더 알아보기 (Learn more)