JAVA解压ZIP文件
程序员文章站
2022-05-19 14:22:54
...
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
public class ZipUtil {
public static void unzip(String zipFile){
// 要解压文件路径
File file = new File(zipFile);
if(!file.exists() || !file.isFile()){
return;
}
// 文件当前文件夹
String basePath = file.getParent();
// 缓冲区大小
int buffersize = 1024;
int count = 0;
// 缓冲区
byte[] buffer = new byte[buffersize];
try {
// Zip文件
ZipFile zfile = new ZipFile(file);
// 获取Zip包里的所有元素
Enumeration<ZipEntry> zips = (Enumeration<ZipEntry>) zfile.entries();
// 遍历Zip包里的所有元素
while(zips.hasMoreElements()){
// 获取文件
ZipEntry entry = zips.nextElement();
// 文件名
String name = entry.getName();
// 解压后文件的全路径
String filePath = basePath + File.separator + name;
// 处理zip文件包含文件夹
if(entry.isDirectory()){
System.out.println("isDirectory");
File path = new File(filePath);
if(!path.exists()){
path.mkdir();
}
continue;
}
// 获取压缩文件输入流
InputStream in = zfile.getInputStream(entry);
// 带缓冲的输入流
BufferedInputStream bis = new BufferedInputStream(in);
// 带缓冲的输入流
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
// 从输入流中读取字节并写入输出流中
while((count = bis.read(buffer, 0, buffersize)) != -1){
bos.write(buffer, 0, count);
}
// 释放资源
bos.flush();
bos.close();
bos.close();
}
// 关闭文件
zfile.close();
} catch (ZipException e) {
} catch (IOException e) {
}
}
public static void main(String[] args) {
ZipUtil.unzip("E:\\pics.zip");
}
}