import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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.ZipInputStream;
import org.apache.log4j.Logger;
/**
* <p>
* Title: 解压工具类
* </p>
* <p>
* Description: 解压工具类
* </p>
*/
public class UnzipUtil {
private static Logger log = Logger.getLogger(UnzipUtil.class);
public UnzipUtil() {
}
public static boolean UnZip(String pStrZipPathName,
String pStrUnZipPathName) throws IOException
{
//定义缓冲区大小
int BUFFER = 1024 * 1024;
//定义一个BufferedOutputStream,在后面根据entry来赋值
BufferedOutputStream dest = null;
ZipInputStream zis = null;
try {
//创建压缩文件的FileInputStream
FileInputStream fis = new FileInputStream(pStrZipPathName);
//创建压缩文件的ZipInputStream
zis = new ZipInputStream(new BufferedInputStream(fis));
//Zip文件的entry
ZipEntry entry;
while ( (entry = zis.getNextEntry()) != null) {
int count;
byte data[] = new byte[BUFFER];
if (entry.isDirectory()) {
File dir = new File(pStrUnZipPathName + entry.getName() + '\\');
//System.out.println(dir.getPath());
if (dir.mkdirs()) {
//System.out.println("目录:" + dir.getPath() + "/ 创建成功!");
continue;
}
else {
//System.out.println("目录:" + dir.getPath() + "/ 创建失败!");
System.out.println("目录:" + dir.getPath() + "/ 创建失败!");
return false;
}
}
//创建entry的FileOutputStream
FileOutputStream fos =
new FileOutputStream(pStrUnZipPathName + entry.getName());
//创建要解压的原始文件的BufferedOutputStream
dest = new BufferedOutputStream(fos, BUFFER);
while ( (count = zis.read(data, 0, BUFFER))
!= -1) {
//将数据写入原始文件
dest.write(data, 0, count);
}
//完成一个原始文件的解压
dest.flush();
dest.close();
}
zis.close();
}
catch (Exception e) {
log.error("",e);
return false;
}finally{
if(zis != null){
zis.close();
}
}
return true;
}
public static void main(String[] args)
{
//UnZip("c:/temp/TD_72.zip", "c:\\temp\\");
}
}