添加POM, 使用的是 2.x 版本, 和1.x 差别很大
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>2.5.2</version>
</dependency>
示例代码如下
public static void main(String[] args) throws Exception {
String password = "password";
// 解压
try {
File file1 = new File("C:\\Users\\j6153\\Downloads\\1.zip");
String target = "C:\\Users\\j6153\\Downloads\\1";
ZipFile zipFile = new ZipFile(file1);
// 编码格式
Charset gbk = Charset.forName("GBK");
zipFile.setCharset(gbk);
//zipFile.se
if (zipFile.isEncrypted()) {
zipFile.setPassword(password.toCharArray());
}
zipFile.extractAll(target);
} catch (ZipException e) {
e.printStackTrace();
}
// 压缩
try {
File file2 = new File("C:\\Users\\j6153\\Downloads\\123.zip");
File file3 = new File("C:\\Users\\j6153\\Downloads\\1");
//设置参数
ZipParameters para = new ZipParameters();
//设置压缩方式,默认是COMP_DEFLATE
para.setCompressionMethod(CompressionMethod.DEFLATE);
//设置压缩级别,默认为0(即不压缩)
para.setCompressionLevel(CompressionLevel.NORMAL);
// 是否密码
para.setEncryptFiles(true);
// 加密方式
para.setEncryptionMethod(EncryptionMethod.ZIP_STANDARD);
ZipFile zipFile = new ZipFile(file2);
zipFile.setPassword(password.toCharArray());
Charset gbk = Charset.forName("GBK");
zipFile.setCharset(gbk);
zipFile.createSplitZipFileFromFolder(file3, para, false, 0L);
} catch (ZipException e) {
e.printStackTrace();
}
}