본문 바로가기

[Terry] JAVA

자바 파일 압축하기

자바 파일 압축하기 소스를 만들어 보았다.

기본적으로 주석들이 영어인 이유는…… 그냥 api에서 해당 함수들에 대한 설명을 긁어왔기 때문이니….

알아서 해석하시길…ㅎㅎ

package com.eunicon.common.util;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class MakeZip {
    public void compress(String[] source, String target){
        byte[] buf = new byte[1024];

        try {           
            // for writing files in the ZIP file format.
            ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(target));

            // source라는 문자 배열에 정의된 파일 수 만큼 파일들을 압축한다.
            for (int i = 0; i < source.length; i++) {
                FileInputStream in = new FileInputStream(source[i]);

                /* Begins writing a new ZIP file entry and positions the stream to the start of the entry data.
                 * new ZipEntry(source[i]) : the ZIP entry to be written.
                 */
                zipOut.putNextEntry(new ZipEntry(source[i]));

                int len;               
                while ((len = in.read(buf)) > 0) {
                    /* Writes an array of bytes to the current ZIP entry data.
                     *
                     * buf    : the data to be written.
                     * 0    : the start offset in the data.
                     * len    : the number of bytes that are written.
                     */
                    zipOut.write(buf, 0, len);
                }

                // Closes the current ZIP entry and positions the stream for writing the next entry.
                zipOut.closeEntry();
                in.close();
            }
            // Closes the ZIP output stream as well as the stream being filtered.
            zipOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        /* 압축할 원본 파일들
         * WINDOWS 파일 시스템을 기준으로 한 절대경로로 지정함.
         */
        String[] source = new String[] {
                "D:\\DownLoads\\smsp2.gif",
                "D:\\DownLoads\\2008_03_IMG_6449.jpg",
                "D:\\DownLoads\\2008_03_IMG_6244.jpg" };

        // 압축 파일이 저장될 target을 지정한다.
        String target = "D:\\DownLoads\\20090109.zip";
        MakeZip makeZip =  new MakeZip();
        makeZip.compress(source, target);
    }
}