importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Enumeration;importjava.util.zip.ZipException;importorg.apache.tools.zip.ZipEntry;importorg.apache.tools.zip.ZipFile;/*** 可以处理中文文件名*/
public classjieya {public static voidmain(String[] args) {/*** 解压文件*/File zipFile= new File("e:/压缩sdhjk.rar");
String path= "e:/zipfile/";try{
unZipFiles(zipFile, path);
}catch(Exception e) {
System.out.println("解压异常");
}
}/*** 解压到指定目录
*
*@paramzipPath
*@paramdescDir
*@authorisea533*/
public static voidunZipFiles(String zipPath, String descDir) {try{
unZipFiles(newFile(zipPath), descDir);
}catch(Exception e) {
e.printStackTrace();
}
}/*** 解压文件到指定目录
*
*@paramzipFile
*@paramdescDir
*@authorisea533*/@SuppressWarnings("rawtypes")public static voidunZipFiles(File zipFile, String descDir) {
File pathFile= newFile(descDir);if (!pathFile.exists()) {
pathFile.mkdirs();
}try{
ZipFile zip= newZipFile(zipFile);for (Enumeration entries =zip.getEntries(); entries
.hasMoreElements();) {
ZipEntry entry=(ZipEntry) entries.nextElement();
String zipEntryName=entry.getName();
InputStream in=zip.getInputStream(entry);
String outPath= (descDir +zipEntryName)
.replaceAll("\*", "/");//判断路径是否存在,不存在则创建文件路径
File file = new File(outPath.substring(0,
outPath.lastIndexOf('/')));if (!file.exists()) {
file.mkdirs();
}//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
if (newFile(outPath).isDirectory()) {continue;
}//输出文件路径信息
System.out.println(outPath);
OutputStream out= newFileOutputStream(outPath);byte[] buf1 = new byte[1024];intlen;while ((len = in.read(buf1)) > 0) {
out.write(buf1,0, len);
}
in.close();
out.close();
}
}catch(ZipException e) {
e.printStackTrace();
System.out.println("压缩文件打开异常");
}catch(FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件没有找到");
}catch(IOException e) {
e.printStackTrace();
System.out.println("io异常");
}
System.out.println("******************解压完毕********************");
}
}