[java] GZIP 압축 방법을 사용하여 자바 데이터 압축 해제 여부 확인하기

목차

GZIP으로 데이터 압축

자바에서 GZIP을 사용하여 데이터를 압축하려면 다음과 같이 코드를 작성합니다.

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

public class GZIPExample {
    public static void compressFile(String inputFile, String outputFile) {
        try {
            FileInputStream fileInputStream = new FileInputStream(inputFile);
            FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
            GZIPOutputStream gzipOutputStream = new GZIPOutputStream(fileOutputStream);
            byte[] buffer = new byte[1024];
            int len;
            while ((len = fileInputStream.read(buffer)) > 0) {
                gzipOutputStream.write(buffer, 0, len);
            }
            fileInputStream.close();
            gzipOutputStream.finish();
            gzipOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 GZIPExample 클래스에 compressFile 메서드를 정의하고, GZIPOutputStream을 사용하여 파일을 압축합니다.

GZIP에서 압축 해제

이제 GZIP으로 압축된 데이터를 해제하는 방법을 살펴보겠습니다.

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

public class GZIPExample {
    public static void decompressFile(String inputFile, String outputFile) {
        try {
            FileInputStream fileInputStream = new FileInputStream(inputFile);
            GZIPInputStream gzipInputStream = new GZIPInputStream(fileInputStream);
            FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
            byte[] buffer = new byte[1024];
            int len;
            while ((len = gzipInputStream.read(buffer)) > 0) {
                fileOutputStream.write(buffer, 0, len);
            }
            gzipInputStream.close();
            fileOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 GZIPExample 클래스에 decompressFile 메서드를 정의하고, GZIPInputStream을 사용하여 파일을 해제합니다.

변경 여부 확인

마지막으로, 압축 해제한 데이터가 변경되었는지 여부를 확인하는 방법을 살펴봅시다.

import java.io.File;

public class GZIPExample {
    public static boolean isContentChanged(String originalFile, String decompressedFile) {
        File file1 = new File(originalFile);
        File file2 = new File(decompressedFile);
        return file1.length() != file2.length() || !file1.getName().equals(file2.getName());
    }
}

위의 코드는 GZIPExample 클래스에 isContentChanged 메서드를 추가하고, 파일 크기 및 이름을 비교하여 변경 여부를 확인합니다.

이제 자바에서 GZIP을 사용하여 데이터를 압축하고, 압축을 해제하여 데이터가 변경되었는지 확인하는 방법을 자세히 살펴보았습니다.