首先引入相应的包hutool和zip4j <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.1</version> </dependency> <dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>2.9.1</version> </dependency>
代码如下: package com; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import com.aliyun.core.utils.StringUtils; import net.lingala.zip4j.ZipFile; import net.lingala.zip4j.model.UnzipParameters; import java.io.File; import java.io.FileNotFoundException; import java.nio.charset.Charset; public class ZipTest { /** * 解压缩zip文件 * @param inZipFile 压缩文件 * @param file 文件 * @param charset 编码 * @param password 密码 */ public static void unzip(File inZipFile, File file, Charset charset, String password) { if (inZipFile == null || file == null) { throw new NullPointerException("文件不能为空"); } try { if (!inZipFile.exists()) { throw new FileNotFoundException(inZipFile.getAbsolutePath()); } ZipFile zipFile = new ZipFile(inZipFile); if (charset != null) { zipFile.setCharset(charset); } if (!zipFile.isValidZipFile()) { throw new IllegalArgumentException("zip文件格式不正确"); } if (zipFile.isEncrypted()) { if (StringUtils.isEmpty(password)) { throw new NullPointerException("解压密码不能为空"); } zipFile.setPassword(password.toCharArray()); } UnzipParameters parameter = new UnzipParameters(); zipFile.extractAll(file.getAbsolutePath() , parameter); } catch (Exception e) { throw new RuntimeException(e); } } public static void main(String[] args) { long start=System.currentTimeMillis(); File zipFile=FileUtil.file("C:\\Users\\li_yaohua_ext\\Desktop\\Desktop.zip"); File outputFolder=FileUtil.file("C:\\Users\\li_yaohua_ext\\Desktop\\123\\"); for(int i=0;i<1000000;i++){ try { if(i%100==0){ System.out.println("index: "+i); } ZipTest.unzip(zipFile, outputFolder,CharsetUtil.CHARSET_UTF_8,String.valueOf(i)); System.out.println("正确的解压密码: " +i); long end=System.currentTimeMillis(); System.out.println("用时: "+(end-start)/1000+" 秒"); break; } catch (Exception e) { // System.out.println("错误的密码: " +i+" "+e.getMessage()); } } } }