[java] GZIP 압축 방법을 사용하여 자바 데이터 압축 알고리즘 구현하기

GZIP 압축 알고리즘

GZIP은 파일 또는 데이터 스트림을 압축하기 위해 사용되는 파일 형식 및 소프트웨어 애플리케이션의 이름입니다. 자바에서는 java.util.zip 패키지를 사용하여 GZIP 파일 형식을 지원하며, 데이터를 압축하고 해제하는 데 사용할 수 있습니다.

GZIP으로 데이터를 압축하려면 아래와 같은 스텝을 따릅니다.

import java.io.*;
import java.util.zip.GZIPOutputStream;

public class GZIPExample {

    public static void compressFile(String sourceFile, String targetFile) throws IOException {
        try (FileInputStream fis = new FileInputStream(sourceFile);
             FileOutputStream fos = new FileOutputStream(targetFile);
             GZIPOutputStream gzipOS = new GZIPOutputStream(fos)) {

            byte[] buffer = new byte[1024];
            int len;
            while ((len = fis.read(buffer)) != -1) {
                gzipOS.write(buffer, 0, len);
            }
        }
    }

    public static void main(String[] args) {
        try {
            compressFile("input.txt", "output.gz");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제에서 compressFile 메서드는 입력 파일을 GZIP 형식으로 압축하여 출력 파일에 작성합니다.

GZIP 압축 해제 알고리즘

데이터를 GZIP 형식에서 해제하려면 아래와 같은 스텝을 따릅니다.

import java.io.*;
import java.util.zip.GZIPInputStream;

public class GZIPExample {

    public static void decompressFile(String sourceFile, String targetFile) throws IOException {
        try (FileInputStream fis = new FileInputStream(sourceFile);
             FileOutputStream fos = new FileOutputStream(targetFile);
             GZIPInputStream gzipIS = new GZIPInputStream(fis)) {

            byte[] buffer = new byte[1024];
            int len;
            while ((len = gzipIS.read(buffer)) != -1) {
                fos.write(buffer, 0, len);
            }
        }
    }

    public static void main(String[] args) {
        try {
            decompressFile("input.gz", "output.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제에서 decompressFile 메서드는 GZIP 형식의 입력 파일을 해제하여 출력 파일에 작성합니다.

이제 GZIP 압축 알고리즘을 사용하여 자바에서 데이터를 압축하고 해제하는 방법에 대해 배웠습니다. GZIP 관련 더 자세한 정보는 Oracle Java Documentation에서 확인할 수 있습니다.