随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。
前面介绍了几种压缩方式,这里介绍一下文件解压,使用的是java自带的方式,代码如下:
测试类:
package com.home;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
try {
UnzipUtil.unZipFiles("D:\\test\\test.zip", "D:\\test");
} catch (IOException e) {
e.printStackTrace();
}
}
}
解压工具类:
package com.home;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class UnzipUtil {
/**
* 解压文件到指定目录
*
* @param zipPath
* 源zip文件全路径
* @param descDir
* 输出目录
* @throws IOException
*/
@SuppressWarnings("rawtypes")
public static void unZipFiles(String zipPath, String descDir)
throws IOException {
File pathFile = new File(descDir);
if (!pathFile.exists()) {
pathFile.mkdirs();
}
ZipFile zip = new ZipFile(new File(zipPath));
for (Enumeration entries = zip.entries(); entries.hasMoreElements();) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String zipEntryName = entry.getName();
InputStream is = zip.getInputStream(entry);
String outPath = (descDir + zipEntryName).replaceAll("\\*", "/");
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if (!file.exists()) {
file.mkdirs();
}
if (new File(outPath).isDirectory()) {// 如果是全路径是目录,不需要解压
continue;
}
OutputStream os = new FileOutputStream(outPath);
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
is.close();
os.close();
}
}
}