[JAVA] GZIP 포맷으로 데이터 압축/해제하기 :: 소림사의 홍반장!

GZIP 포맷의 압축은 단순하므로, 압축하고자 하는 데이터가 단일 스트림일 때 더욱 적합하다.

 

압축 클래스를 사용하는 방법은 간단한다.

 

GZIPOutputStream이나 ZipOutputStream을 출력 스트림에 덧씌우거나

 

GZIPInputStream이나 ZipInputStream을 입력 스트림에 덧씌우면 된다.

 

사용예제

GZIPcompress.java

 

import java.io.*;

import java.util.zip.GZIPInputStream;

import java.util.zip.GZIPOutputStream;

 

public class GZIPcompress {

 

      public static void main(String[] args) throws IOException{

           

            long startTime = System.currentTimeMillis();

           

            BufferedReader in = new BufferedReader(new FileReader(args[0]));

            BufferedOutputStream out =

                        new BufferedOutputStream(

                                   new GZIPOutputStream(

                                               new FileOutputStream("test.gz")));

            System.out.println("Writing file");

            int c;

            while((c=in.read()) != -1)

                  out.write(c);

            in.close();

            out.close();

           

            long endTime = System.currentTimeMillis();

            System.out.println("압축시간 : " + (endTime - startTime) + " ms");

           

            System.out.println("Reading file");

            startTime = System.currentTimeMillis();

            BufferedReader in2 =

                    new BufferedReader(

                              new InputStreamReader(

                                          new GZIPInputStream(

                                                      new FileInputStream("test.gz"))));

            BufferedOutputStream out2 = new BufferedOutputStream(

                new FileOutputStream("endtest.java"));

            String s;

            while((s = in2.readLine()) != null) {

                  System.out.println(s);

                  out2.write(s.getBytes());

                  out2.write("\n".getBytes());

            }

            in2.close();

            out2.close();

           

            endTime = System.currentTimeMillis();

            System.out.println("복원시간 : " + (endTime - startTime) + " ms");

      } 

}

 

다른 카테고리의 글 목록

Dev. 자바/참고소스 카테고리의 포스트를 톺아봅니다