package com.jieyuechina.util;
import java.io.*;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
/**
* 程序实现了ZIP压缩。共分为2部分 :
* 压缩(compression)与解压(decompression)
* <p>
* 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。
* 需在代码中自定义源输入路径和目标输出路径。
* <p>
* 在本段代码中,实现的是解压部分;压缩部分见本包中compression部分。
* @author HAN
*
*/
public class ZipFileUtil {
@SuppressWarnings("unchecked")
public static void unZipFileByOpache(ZipFile zipFile,
String unZipRoot) throws Exception, IOException {
java.util.Enumeration e = zipFile.getEntries();
ZipEntry zipEntry;
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
InputStream fis = zipFile.getInputStream(zipEntry);
if (zipEntry.isDirectory()) {
} else {
File file = new File(unZipRoot + File.separator + zipEntry.getName());
File parentFile = file.getParentFile();
parentFile.mkdirs();
FileOutputStream fos = new FileOutputStream(file);
byte[] b = new byte[1024];
int len;
while ((len = fis.read(b, 0, b.length)) != -1) {
fos.write(b, 0, len);
}
fos.close();
fis.close();
}
}
}
public static void unZipFile(String unZipFileName, String unZipPath) throws Exception {
ZipFile zipFile = new ZipFile(unZipFileName, "gbk");
unZipFileByOpache(zipFile, unZipPath);
}
public static void main(String[] args) throws Exception {
/**
* 解压文件
*/
unZipFile("d:1.zip", "e:");
}
}