添加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();
}
}