[java] GZIP 압축 방법을 사용하여 자바 파일 입출력 데이터 압축하기

GZIP 압축 방법

GZIP은 데이터를 압축하기 위한 표준 파일 형식입니다. 자바에서는 GZIP 압축을 지원하는 GZIPOutputStreamGZIPInputStream 클래스를 제공하여 간단하게 데이터를 압축하고 압축 해제할 수 있습니다.

자바에서 파일 압축하기

다음은 파일을 GZIP 압축하는 예제 코드입니다.

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

public class FileCompressionExample {
    public static void compressFile(String inputFileName, String outputFileName) throws IOException {
        try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(inputFileName));
             GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(outputFileName))) {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = in.read(buffer)) != -1) {
                out.write(buffer, 0, bytesRead);
            }
        }
    }
    
    public static void main(String[] args) {
        String inputFile = "input.txt";
        String compressedFile = "compressed.gz";
        try {
            compressFile(inputFile, compressedFile);
            System.out.println("File compressed successfully.");
        } catch (IOException e) {
            System.out.println("Error compressing file: " + e.getMessage());
        }
    }
}

이 예제에서는 GZIPOutputStream을 사용하여 input.txt 파일을 compressed.gz 파일로 압축합니다.

자바에서 압축 해제하기

또한, GZIP으로 압축된 파일을 해제하는 방법은 다음과 같습니다.

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

public class FileDecompressionExample {
    public static void decompressFile(String inputFileName, String outputFileName) throws IOException {
        try (GZIPInputStream in = new GZIPInputStream(new FileInputStream(inputFileName));
             BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outputFileName))) {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = in.read(buffer)) != -1) {
                out.write(buffer, 0, bytesRead);
            }
        }
    }
    
    public static void main(String[] args) {
        String compressedFile = "compressed.gz";
        String outputFile = "output.txt";
        try {
            decompressFile(compressedFile, outputFile);
            System.out.println("File decompressed successfully.");
        } catch (IOException e) {
            System.out.println("Error decompressing file: " + e.getMessage());
        }
    }
}

이를 통해 GZIP으로 압축된 파일을 output.txt로 해제할 수 있습니다.

GZIP을 사용하여 자바에서 파일 입출력 데이터를 압축하는 방법에 대해 알아보았습니다. 이를 통해 데이터를 효율적으로 저장하고 전송할 수 있습니다.

참고 문헌: