자바 파일 압축하기 소스를 만들어 보았다.
기본적으로 주석들이 영어인 이유는…… 그냥 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);
}
}