/**
* 解压文件到指定目录
* @param zipFile 待解压的文件
* @param descDir 解压文件后的路径
* @return
*/
@SuppressWarnings("rawtypes")
public boolean unZipFiles(File zipfile, File descDir,Boolean delete_zip) {
try {
if (!descDir.exists())
descDir.mkdirs();
if (descDir.exists()) {
ZipFile zipFile = new ZipFile(zipfile);
Enumeration en = zipFile.getEntries();
ZipEntry zipEntry = null;
while (en.hasMoreElements()) {
zipEntry = (ZipEntry) en.nextElement();
if (zipEntry.isDirectory()) {//如果这是一个目录,创建目录
String dirName = zipEntry.getName();
dirName = dirName.substring(0, dirName.length() - 1);
File f = new File(descDir.getPath() + File.separator + dirName);
f.mkdirs();
} else {// 解压文件
File f = new File(descDir,zipEntry.getName());
if (!f.exists()) {// 判断文件不存在的话,就创建该文件所在文件夹的目录
String[] arrFolderName = zipEntry.getName().split("/");
String strRealFolder = "";
for (int i = 0; i < (arrFolderName.length - 1); i++) {
try {
strRealFolder += arrFolderName[i] + File.separator;
} catch (Exception e) {
outErrorLog(this, "unZipFiles", e);
}
}
strRealFolder = descDir.getPath() + File.separator+ strRealFolder;
File tempDir = new File(strRealFolder);
tempDir.mkdirs();
}
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
int c;
byte[] by = new byte[1024];
while ((c = in.read(by)) != -1) {
try {
out.write(by, 0, c);
} catch (Exception e) {
continue;
}
}
}
}
if(delete_zip)
zipfile.delete();
return true;
}
return false;
} catch (Exception e) {
return false;
}
}