Java实现自动压缩文件并加密的方法示例

作者:东天里的冬天 时间:2023-05-08 03:33:18 

本文实例讲述了Java实现自动压缩文件并加密的方法。分享给大家供大家参考,具体如下:

实现功能:自动压缩并加密


/**
*
* @Title: zipFilesAndEncrypt
* @Description: 将指定路径下的文件压缩至指定zip文件,并以指定密码加密,若密码为空,则不进行加密保护
* @param srcFileName 待压缩文件路径
* @param zipFileName zip文件名
* @param password 加密密码
* @return
* @throws Exception
*/
public void zipFilesAndEncrypt(String srcFileName,String zipFileName,String password) throws Exception{
ZipOutputStream outputStream=null;
System.out.println("进入测试类");
if(StringUtils.isEmpty(srcFileName) || StringUtils.isEmpty(zipFileName)){
 log.error("请求的压缩路径或者文件名有误");
 return;
}
try {
 ZipParameters parameters = new ZipParameters();
 parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
 parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
 if(!StringUtils.isEmpty(password)){
  parameters.setEncryptFiles(true);
  parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
  parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
  parameters.setPassword(password);
 }
 ArrayList<File> filesToAdd = new ArrayList<File>();
 File file=new File(srcFileName);
 File[] files = new File[0];
 if(file.isDirectory())
 {
  files = file.listFiles();
  for(int i=0;i<files.length;i++){
  filesToAdd.add(new File(srcFileName+files[i].getName()));
  System.out.println("文件名称:"+files[i].getName());
  }
 }
 else {
  filesToAdd.add(new File(srcFileName+file.getName()));
 }
 ZipFile zipFile = new ZipFile(srcFileName+zipFileName+".zip");
 zipFile.addFiles(filesToAdd, parameters);
}
catch (Exception e) {
 System.out.println("文件压缩出错");
 log.error("文件压缩出错", e);
throw e;
}
}

希望本文所述对大家java程序设计有所帮助。

来源:http://blog.csdn.net/gwd1154978352/article/details/71078916

标签:Java,压缩,文件,加密
0
投稿

猜你喜欢

  • Android 应用中跳转到应用市场评分示例

    2023-02-14 04:03:22
  • Java并发之嵌套管程锁死详解

    2023-01-13 10:55:01
  • Android onCreate( )方法详细介绍

    2023-02-24 12:27:07
  • Java8 如何正确高效的使用并行流

    2021-06-01 20:29:19
  • C#中的自动类型转换和强制类型转换

    2023-08-10 07:11:14
  • 详解Android Studio正式签名进行调试的实现步骤

    2021-12-30 21:56:07
  • JPA like 模糊查询 语法格式解析

    2022-06-16 20:43:42
  • Spring中事务传播行为的介绍

    2023-06-24 01:21:01
  • c#中list.FindAll与for循环的性能对比总结

    2021-08-15 21:20:44
  • ANDROID 完美退出APP的实例代码

    2023-04-27 13:03:06
  • springboot下ueditor上传功能的实现及遇到的问题

    2023-09-22 05:46:21
  • C#中DataGridView操作技巧

    2023-05-03 20:37:30
  • C#面向对象设计原则之里氏替换原则

    2022-08-27 23:59:22
  • java并发编程中ReentrantLock可重入读写锁

    2021-12-10 16:06:17
  • Java中DecimalFormat用法及符号含义

    2023-05-04 04:31:14
  • Android动态添加碎片代码实例

    2023-10-19 23:35:13
  • java二维数组遍历的2种代码

    2022-05-03 08:52:50
  • 解决IDEA中 Ctrl+ALT+V这个快捷键无法使用的情况

    2022-02-27 07:51:36
  • SpringBoot 多任务并行+线程池处理的实现

    2023-04-02 01:16:25
  • Android Java try catch 失效问题及解决

    2023-06-17 17:07:33
  • asp之家 软件编程 m.aspxhome.com