
核心类 ZipInputStream 的api文档请参考:
https://nowjava.com/docs/java-api-11/java.base/java/util/zip/ZipInputStream.html
关于zip压缩的代码参考:http://www.jiajiajia.club/blog/artical/1en1qpemej45/499
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class ZipInPutTest {
public static void main(String[] args) throws Exception{
File file = new File("D:\\data\\ziptest\\test.zip");
// 文件输入流(需要解压的文件)
BufferedInputStream bufferedInputStream
= new BufferedInputStream(
new FileInputStream(file));
ZipInputStream zipInputStream = new ZipInputStream(bufferedInputStream);
// 压缩文件实例,为了获取ZipEntry的内容
ZipFile zipFile = new ZipFile(file);
// 文件解压保存的地方
String path = "D:\\data\\ziptest\\test\\";
ZipEntry zipEntry;
while ((zipEntry=zipInputStream.getNextEntry())!=null){
// zipEntry 是一个文件夹
if(zipEntry.isDirectory()){
File directory = new File(path+zipEntry.getName()+"\\");
if(!directory.exists()){
directory.mkdirs();
}
}else{
// zipEntry 是一个文件
// outFile 创建并输出到本地文件
File outFile = new File(path+zipEntry.getName());
// 文件输出流
BufferedOutputStream bufferedOutputStream =
new BufferedOutputStream(
new FileOutputStream(outFile));
// 获取ZipEntry的文件流
InputStream inputStream = zipFile.getInputStream(zipEntry);
byte[] b = new byte[1024];
int length;
while ((length=inputStream.read(b))!=-1){
// 写入到本地文件
bufferedOutputStream.write(b,0,length);
}
inputStream.close();
bufferedOutputStream.close();
}
}
zipInputStream.close();
bufferedInputStream.close();
zipFile.close();
}
}