Android 解压工具类
/**
*
* @param archive 解压文件得路径
* @param decompressDir 解压文件目标路径
* @param isDeleteZip 解压完毕是否删除解压文件
* @throws IOException
*/
public static void unZipFile(String archive, String decompressDir, boolean isDeleteZip) throws IOException {
BufferedInputStream bi;
ZipFile zf = new ZipFile(archive);
Enumeration e = zf.entries();
while (e.hasMoreElements()) {
ZipEntry ze2 = (ZipEntry) e.nextElement();
String entryName = ze2.getName();
String path = decompressDir + "/" + entryName;
if (ze2.isDirectory()) {
File decompressDirFile = new File(path);
if (!decompressDirFile.exists()) {
decompressDirFile.mkdirs();
}
} else {
String fileDir = path.substring(0, path.lastIndexOf("/"));
if (decompressDir.endsWith(RemindAudioConstant.ZIP_FILE_SUFFIX)) {
decompressDir = decompressDir.substring(0, decompressDir.lastIndexOf(RemindAudioConstant.ZIP_FILE_SUFFIX));
}
File fileDirFile = new File(decompressDir);
if (!fileDirFile.exists()) {
fileDirFile.mkdirs();
}
String substring = entryName.substring(entryName.lastIndexOf("/") + 1, entryName.length());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(decompressDir + "/" + substring));
bi = new BufferedInputStream(zf.getInputStream(ze2));
byte[] readContent = new byte[1024];
int readCount = bi.read(readContent);
while (readCount != -1) {
bos.write(readContent, 0, readCount);
readCount = bi.read(readContent);
}
bos.close();
}
}
zf.close();
if (isDeleteZip) {
File zipFile = new File(archive);
if (zipFile.exists() && zipFile.getName().endsWith(".zip")) {
zipFile.delete();
}
}
}