|
|
|
@ -7,6 +7,7 @@ import java.io.*;
|
|
|
|
import java.nio.charset.Charset;
|
|
|
|
import java.nio.charset.Charset;
|
|
|
|
import java.util.Enumeration;
|
|
|
|
import java.util.Enumeration;
|
|
|
|
import java.util.zip.ZipEntry;
|
|
|
|
import java.util.zip.ZipEntry;
|
|
|
|
|
|
|
|
import java.util.zip.ZipException;
|
|
|
|
import java.util.zip.ZipFile;
|
|
|
|
import java.util.zip.ZipFile;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
@ -37,33 +38,37 @@ public class CompressFileUtils {
|
|
|
|
if (!pathFile.exists()) {
|
|
|
|
if (!pathFile.exists()) {
|
|
|
|
pathFile.mkdirs();
|
|
|
|
pathFile.mkdirs();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ZipFile zip = new ZipFile(zipFile,Charset.forName("GBK"));
|
|
|
|
try(ZipFile zip = new ZipFile(zipFile,Charset.forName("GBK"))) {
|
|
|
|
for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) {
|
|
|
|
for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) {
|
|
|
|
ZipEntry entry = (ZipEntry) entries.nextElement();
|
|
|
|
ZipEntry entry = (ZipEntry) entries.nextElement();
|
|
|
|
String zipEntryName = entry.getName();
|
|
|
|
String zipEntryName = entry.getName();
|
|
|
|
InputStream in = zip.getInputStream(entry);
|
|
|
|
InputStream in = zip.getInputStream(entry);
|
|
|
|
String outPath = (descDir + zipEntryName).replaceAll("\\*", "/");
|
|
|
|
String outPath = (descDir + zipEntryName).replaceAll("\\*", "/");
|
|
|
|
;
|
|
|
|
;
|
|
|
|
//判断路径是否存在,不存在则创建文件路径
|
|
|
|
//判断路径是否存在,不存在则创建文件路径
|
|
|
|
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
|
|
|
|
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
|
|
|
|
if (!file.exists()) {
|
|
|
|
if (!file.exists()) {
|
|
|
|
file.mkdirs();
|
|
|
|
file.mkdirs();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
|
|
|
|
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
|
|
|
|
if (new File(outPath).isDirectory()) {
|
|
|
|
if (new File(outPath).isDirectory()) {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//输出文件路径信息
|
|
|
|
//输出文件路径信息
|
|
|
|
//System.out.println(outPath);
|
|
|
|
//System.out.println(outPath);
|
|
|
|
|
|
|
|
|
|
|
|
OutputStream out = new FileOutputStream(outPath);
|
|
|
|
OutputStream out = new FileOutputStream(outPath);
|
|
|
|
byte[] buf1 = new byte[1024];
|
|
|
|
byte[] buf1 = new byte[1024];
|
|
|
|
int len;
|
|
|
|
int len;
|
|
|
|
while ((len = in.read(buf1)) > 0) {
|
|
|
|
while ((len = in.read(buf1)) > 0) {
|
|
|
|
out.write(buf1, 0, len);
|
|
|
|
out.write(buf1, 0, len);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
in.close();
|
|
|
|
|
|
|
|
out.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
in.close();
|
|
|
|
} catch (ZipException e) {
|
|
|
|
out.close();
|
|
|
|
// 特定的Zip文件异常处理
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//System.out.println("******************解压完毕********************");
|
|
|
|
//System.out.println("******************解压完毕********************");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|