对于项目中用到zip打包,并设置密码,可以参考下
注意:每个软件打开的效果不一样,
mac点击就需要输入密码才能看到里面的内容。
7zip是可以直接看到压缩包的内容,但是点击某个文件是需要密码,解压也是需要密码。
360压缩也同理,Win11如果没有设置默认打开软件的话,会点开文件报错。
/**
* 压缩文件并设置密码到指定目录
*
* @param files 文件
* @param zipFilePath 压缩后的目标目录
*/
public static void filesToZipEncrypt(String zipFilePath, File[] files, String password) {
try {
ZipFile zip = new ZipFile(zipFilePath, password.toCharArray());
ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(CompressionMethod.DEFLATE);
parameters.setCompressionLevel(CompressionLevel.NORMAL);
// 启用AES加密
parameters.setEncryptFiles(true);
parameters.setEncryptionMethod(EncryptionMethod.AES);
parameters.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_128);
// 添加文件到ZIP
List<File> addFiles = Arrays.asList(files);
zip.addFiles(addFiles, parameters);
} catch (Exception e) {
log.error("压缩加密异常:", e);
throw new BusinessException("压缩加密异常");
}
}