package hhf.mail;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
/**
* 壓縮文件、解壓壓縮文件
* @author HHF
* 2014年12月30日
*/
public class ZIP {
/**
* 功能:壓縮多個文件成一個zip文件
* @param srcfile:源文件列表
* @param zipfile:壓縮後的文件
*/
public static void zipFiles(File[] srcfile, File zipfile) {
byte[] buf = new byte[1024];
try {
// ZipOutputStream類:完成文件或文件夾的壓縮
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
for (int i = 0; i < srcfile.length; i++) {
FileInputStream in = new FileInputStream(srcfile[i]);
out.putNextEntry(new ZipEntry(srcfile[i].getName()));
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.closeEntry();
in.close();
}
out.close();
System.out.println("壓縮完成.");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 功能:解壓縮
* @param zipfile:需要解壓縮的文件
* @param descDir:解壓後的目標目錄
* @throws IOException
*/
@SuppressWarnings("rawtypes")
public static void unZipFiles(File zipfile, String descDir) {
File file = new File(descDir);
if (!file.exists()) {
try {
file.mkdir();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
ZipFile zf = new ZipFile(zipfile);
for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zf.getInputStream(entry);
OutputStream out = new FileOutputStream(descDir + zipEntryName);
byte[] buf1 = new byte[1024];
int len;
while ((len = in.read(buf1)) > 0) {
out.write(buf1, 0, len);
}
in.close();
out.close();
System.out.println("解壓縮完成.");
}
zf.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 需要解壓縮的文件
File file = new File("D:\\test");
File filenew = new File("D:\\test.zip");
zipFiles(file.listFiles(), filenew);
// 解壓後的目標目錄
String dir = "D:\\workspace\\";
unZipFiles(filenew, dir);
}
}
旨在大家需要的時候方便作爲工具類使用