java将文件压缩成ZIP并加密

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

    }
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值