文件夹加密功能失效问题(附演示代码)
问题排查:Zip4J文件夹加密失效的原因及修复方案
嘿,我一眼就瞅出问题所在了——你精心配置的ZipParameters根本没传到addFolder方法里!这就像你备好了全套加密调料,结果炒菜时完全没加,那成品自然没加密效果~
核心问题分析
你的代码里确实正确创建并配置了ZipParameters(开启加密、设置AES-256等),但调用addFolder时用的是无参数重载版本,这个方法不会应用你定义的加密规则,所以生成的Zip文件完全没加密,isEncrypted()返回false是必然结果。
修复步骤
只需要在调用addFolder时,把你配置好的zipParameters作为第二个参数传进去就行,同时建议用try-with-resources语法自动关闭ZipFile资源,确保所有数据正确写入:
import net.lingala.zip4j.ZipFile; import net.lingala.zip4j.exception.ZipException; import net.lingala.zip4j.model.ZipParameters; import net.lingala.zip4j.model.enums.AesKeyStrength; import net.lingala.zip4j.model.enums.CompressionLevel; import net.lingala.zip4j.model.enums.CompressionMethod; import net.lingala.zip4j.model.enums.EncryptionMethod; import java.io.File; public class Demo_ZipEncryptFolderOnly { public static void main(String[] args) throws ZipException { ZipParameters zipParameters = new ZipParameters(); zipParameters.setEncryptFiles(true); zipParameters.setCompressionMethod(CompressionMethod.DEFLATE); zipParameters.setCompressionLevel(CompressionLevel.NORMAL); zipParameters.setEncryptionMethod(EncryptionMethod.AES); zipParameters.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_256); try (ZipFile zipFile = new ZipFile("C:\\Users\\me\\Desktop\\Folder.zip", "password".toCharArray())) { // 关键:把配置好的ZipParameters传进addFolder方法 zipFile.addFolder(new File("C:\\Users\\me\\Desktop\\Folder"), zipParameters); System.out.println("Encrypted: "+zipFile.isEncrypted()); } // try-with-resources会自动关闭文件资源,无需手动调用close() } }
额外验证建议
除了用isEncrypted()检查,你可以手动用系统自带的压缩工具或者其他Zip软件打开生成的文件,看是否要求输入密码——这是最直观的验证方式。
你的Maven依赖配置没问题,zip4j 2.8.0是稳定版本,无需调整。
内容的提问来源于stack exchange,提问作者Mathomatic
相关产品推荐
相关产品推荐

