import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FileZipCreate {
//zip파일 생성 메서드
public static void zipDirectory(String dir, String zipfile) throws IOException, IllegalArgumentException { //디렉토리 존재 유무 체크 및 해당 파일 리스트를 가져오기 위하여 객체 생성
File d = new File(dir);
//디렉토리 존재 유무 체크
if (!d.isDirectory()) throw new IllegalArgumentException("Not a directory: " + dir);
//해당 경로의 파일을 배열로 가져옴
String[] entries = d.list(); //파일 복사를 위한 버퍼
byte[] buffer = new byte[4096];
int bytesRead;
//zip파일을 생성하기 위한 객체 생성
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
//해당경로의 파일들을 루프
for (int i = 0; i < entries.length; i++) {
File f = new File(d, entries[i]);
if (f.isDirectory()) continue;// Ignore directory
//스트림으로 파일을 읽음
FileInputStream in = new FileInputStream(f);
// Stream to read file
//zip파일을 만들기 위하여 out객체에 write하여 zip파일 생성
ZipEntry entry = new ZipEntry(f.getPath());
// Make a ZipEntry
System.out.println("압축 대상 파일 : " + entry);
out.putNextEntry(entry);
// Store entry
while ((bytesRead = in.read(buffer)) != -1)
out.write(buffer, 0, bytesRead); in.close();
}
out.close();
}
public static void main(String args[]) throws IOException {
//압축할 디렉토리 경로
String zipFilePath = "C:\\excelfile\\realxlsx";
//압축할 파일명
String zipFileName = "C:\\excelfile\\downloadXlsx";
//압축 메서드
FileZipCreate.zipDirectory(zipFilePath, zipFileName + ".zip");
}
}
728x90
반응형
'Language > Java' 카테고리의 다른 글
java 천단위 콤마 출력 (0) | 2018.02.04 |
---|---|
des 암복호화 (0) | 2018.01.15 |
대용량 엑셀다운로드 (0) | 2018.01.13 |
첨부파일 byte를 받아 [bytes, KB, MB, GB, TB, PB] 으로 변환 (0) | 2018.01.13 |
자바 숫자 체크 (0) | 2018.01.13 |