[java] Zlib 압축 알고리즘을 자바에서 사용하는 방법
Zlib은 데이터를 압축하고 해제하는 데 효과적인 알고리즘입니다. 이 알고리즘을 자바에서 사용하려면 java.util.zip
패키지의 Deflater
와 Inflater
클래스를 사용할 수 있습니다.
압축하기
아래의 예제 코드는 Deflater
클래스를 사용하여 문자열을 압축하는 방법을 보여줍니다.
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
public class ZlibCompressionExample {
public static void main(String[] args) {
String input = "Hello, world!";
byte[] inputData = input.getBytes();
// Deflater 객체 생성
Deflater deflater = new Deflater();
deflater.setInput(inputData);
// 압축한 데이터를 저장할 바이트 배열 출력 스트림 생성
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(outputStream, deflater);
try {
// 데이터를 압축하여 출력 스트림에 쓰기
deflaterOutputStream.write(inputData);
deflaterOutputStream.finish();
// 압축된 데이터 얻기
byte[] compressedData = outputStream.toByteArray();
System.out.println("압축된 데이터: " + new String(compressedData));
} catch (IOException e) {
e.printStackTrace();
} finally {
// 출력 스트림 닫기
try {
deflaterOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
해제하기
아래의 예제 코드는 Inflater
클래스를 사용하여 압축된 데이터를 해제하는 방법을 보여줍니다.
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;
public class ZlibDecompressionExample {
public static void main(String[] args) {
byte[] compressedData = ... ; // 압축된 데이터
// Inflater 객체 생성
Inflater inflater = new Inflater();
inflater.setInput(compressedData);
// 해제한 데이터를 저장할 바이트 배열 출력 스트림 생성
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
InflaterInputStream inflaterInputStream = new InflaterInputStream(new ByteArrayInputStream(compressedData), inflater);
try {
// 데이터를 해제하여 출력 스트림에 쓰기
byte[] buffer = new byte[1024];
int length;
while ((length = inflaterInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
// 해제된 데이터 얻기
byte[] decompressedData = outputStream.toByteArray();
System.out.println("해제된 데이터: " + new String(decompressedData));
} catch (IOException e) {
e.printStackTrace();
} finally {
// 출력 스트림 닫기
try {
inflaterInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
압축과 해제에 대한 예제 코드를 제공했습니다. 이를 참고하여 Zlib 압축 알고리즘을 자바에서 사용하는 방법을 익힐 수 있습니다.