1.导入pom依赖
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>1.3.1</version>
</dependency>
2.代码实现
public void reZipCsvFiles(MultipartFile[] file,String targetZipRealPath,byte[] aesByte){
String aesStr = new String(aesByte);
try {
//设置压缩文件参数
ZipParameters parameters = new ZipParameters();
//设置压缩方法
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
//设置压缩级别
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
//设置压缩文件是否加密
parameters.setEncryptFiles(true);
//设置aes加密强度
parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
//设置加密方法
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
//设置密码
parameters.setPassword(aesStr.toCharArray());
//压缩文件,并生成压缩文件
ArrayList<File> filesToAdd = new ArrayList<File>();
for (MultipartFile file1 : file) {
System.out.println(file1.getOriginalFilename());
//File realFile = new File(file1.getOriginalFilename());
File realFile = new File(okFile+ "temp"+File.separator+file1.getName());
//将file1文件的流复制到readFile中(MutipartFile转File)
FileUtils.copyInputStreamToFile(file1.getInputStream(),realFile);
filesToAdd.add(realFile);
}
//创建ZipFile文件对象,指定压缩后的保存位置。
ZipFile zipFile = new ZipFile(okFile+targetZipRealPath);
//将文件列表和加密参数添加到zipFile开始压缩生成zip文件。
zipFile.addFiles(filesToAdd,parameters );
} catch (ZipException | IOException e) {
e.printStackTrace();
}
}