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,压缩,文件,加密
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
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
![](https://img.aspxhome.com/file/2023/2/61032_0s.png)
C#中的自动类型转换和强制类型转换
2023-08-10 07:11:14
详解Android Studio正式签名进行调试的实现步骤
2021-12-30 21:56:07
![](https://img.aspxhome.com/file/2023/5/139325_0s.png)
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
![](https://img.aspxhome.com/file/2023/0/108700_0s.png)
ANDROID 完美退出APP的实例代码
2023-04-27 13:03:06
springboot下ueditor上传功能的实现及遇到的问题
2023-09-22 05:46:21
![](https://img.aspxhome.com/file/2023/5/125515_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/2/102642_0s.jpg)
Android动态添加碎片代码实例
2023-10-19 23:35:13
java二维数组遍历的2种代码
2022-05-03 08:52:50
![](https://img.aspxhome.com/file/2023/7/63997_0s.png)
解决IDEA中 Ctrl+ALT+V这个快捷键无法使用的情况
2022-02-27 07:51:36
![](https://img.aspxhome.com/file/2023/9/131999_0s.jpg)
SpringBoot 多任务并行+线程池处理的实现
2023-04-02 01:16:25
![](https://img.aspxhome.com/file/2023/8/122268_0s.png)
Android Java try catch 失效问题及解决
2023-06-17 17:07:33