[java] GZIP 압축 방법을 사용하여 네트워크 전송을 압축하는 방법

데이터를 네트워크를 통해 전송할 때, 압축을 사용하여 대역폭을 절약하고 전송 시간을 단축할 수 있습니다. GZIP 알고리즘은 널리 사용되며, Java에서는 GZIPOutputStreamGZIPInputStream 클래스를 사용하여 데이터를 압축 및 제거할 수 있습니다.

아래는 GZIP를 사용하여 데이터를 압축한 후 전송하는 Java 코드입니다.

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

public class FileCompressor {
    public static void compressFile(String inputFileName, String outputFileName) throws IOException {
        FileInputStream inputStream = new FileInputStream(inputFileName);
        FileOutputStream outputStream = new FileOutputStream(outputFileName);
        GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream);

        byte[] buffer = new byte[1024];
        int len;
        while ((len = inputStream.read(buffer)) > 0) {
            gzipOutputStream.write(buffer, 0, len);
        }

        inputStream.close();
        gzipOutputStream.finish();
        gzipOutputStream.close();
    }
}

위의 코드에서는 FileCompressor 클래스의 compressFile 메서드를 사용하여 입력 파일을 GZIP 압축하여 출력 파일에 쓰고 있습니다.

이런 방식으로 전송하는 쪽에서는 데이터를 GZIP으로 압축하여 전송하고, 수신하는 쪽에서는 GZIPInputStream 클래스를 사용하여 압축을 해제할 수 있습니다.

참고 자료