引入依赖:zip4j

 <dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>1.3.2</version>
</dependency>

一、压缩

不多说直接上图,如下图为我测试的文件路径。
桌面上的“测试加密压缩”文件夹下,一个为文件,一个为文件夹。

public class Test {public static void main(String[] args) throws ZipException {compressedFileWithPassword("C:/Users/12495/Desktop/测试加密压缩","C:/Users/12495/Desktop/测试加密压缩","123456");}/*** 压缩包加密** @param resourcesPath 需要压缩的源文件路径* @param targetPath 压缩后的目标路径* @param password 压缩密码* @throws ZipException*/public static void compressedFileWithPassword(String resourcesPath, String targetPath, String password) throws ZipException {File resourcesFile = new File(resourcesPath);// 没有目标目录为父路径if (StringUtils.isBlank(targetPath)) {targetPath = resourcesFile.getParent();}File targetFile = new File(targetPath);//如果目的路径不存在,则新建if (!targetFile.exists()) {targetFile.mkdirs();}ZipFile zipFile = new ZipFile(resourcesPath + ".zip");//设置编码zipFile.setFileNameCharset("GBK");//设置参数ZipParameters parameters = new ZipParameters();//设置压缩方式.parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);//设置压缩级别,默认为0(即不压缩)parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);//设置压缩密码(至少3步)//设置加密文件parameters.setEncryptFiles(true);//设置加密方式parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);if (StringUtils.isNotBlank(password)) {parameters.setPassword(password);}File[] fs = resourcesFile.listFiles();for (File f : fs) {if (f.isDirectory()) {//添加文件夹zipFile.addFolder(f, parameters);} else {//添加文件zipFile.addFile(f, parameters);}}}
}

压缩后效果图:


成功加密压缩。

二、解压

解压就比较简单了,路径对就没问题了

public class Test {public static void main(String[] args) throws Exception {//        compressedFileWithPassword("C:/Users/12495/Desktop/测试加密压缩",
//                "C:/Users/12495/Desktop/测试加密压缩","123456");zipUncompressPassword("C:/Users/12495/Desktop/测试加密压缩.zip", "123456");}/*** 解压缩* @param inputFile 压缩包的路径* @throws Exception*/public static void zipUncompressPassword(String inputFile, String password) throws Exception {File file = new File(inputFile);ZipFile zipFile = new ZipFile(file);//设置文件编码,根据实际场景zipFile.setFileNameCharset("GBK");if (zipFile.isEncrypted()) {zipFile.setPassword(password.toCharArray());}zipFile.extractAll(inputFile.replace(".zip", ""));}
}

以上就是解压的过程。

Zip4j 压缩包加密压缩与解压相关推荐

  1. C# 关于压缩、加密、解压问题

    本文探讨的是关于C#TXT文件的压缩.加密以及解压问题,采用的是密钥方式,可以先进行加密再进行压缩包导入到桌面. 界面如下: 源文件:想要压缩的TXT文件,里边必须有东西,不然代码会报错 压缩文件:要 ...

  2. 边打包边压缩边传输边解压

    高效同步数据的方法及效率测试--边打包边压缩边传输边解压20150105 https://blog.csdn.net/xuyaqun/article/details/42422791 个人分类: 技术 ...

  3. JPEG2000压缩DICOM文件的解压(一)

    JPEG2000压缩DICOM文件的解压(一) 这几天写了一个JPEG2000压缩DICOM解压的下程序 DICOM文件中如果标签如下: 0002,0010里的值为    1.2.840.10008. ...

  4. JPEG2000压缩DICOM文件的解压(三)

    DICOM文件JPEG2000压缩与解压(三) QQ:2556741313 关键词:DCMTK.DICOM.JPEG2000 前面两篇关于DICOM文件JPEG2000解压的内容很简单,主要是没有那么 ...

  5. zip(压缩) 和 *zipped(解压)_CodingPark编程公园

    压缩 a = [1, 2, 3] b = [4, 5, 6] c = [4, 5, 6, 7, 8] zipped = zip(a, b) # 压缩 print(list(zipped)) 解压 a ...

  6. Unity 工具类 之 WWW/UnityWebRequest 下载压缩文件(zip),解压到本地且加载使用解压数据的简单案例(内也含压缩文件例子)

    Unity 工具类 之 WWW/UnityWebRequest 网络下载压缩文件(zip),解压到本地,且加载使用解压数据的简单案例(内也含压缩文件例子) 目录 Unity 工具类 之 WWW/Uni ...

  7. linux-linux常用命令总结四linux压缩、打包、解压命令软件安装管理rpm及yum的使用

    一.压缩和打包概念 压缩: 指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容. 打包: 指将多个文件(或目录)合并成一个文件,方便传递或部署. 在Linux系统中,文件的后缀名不重要,但 ...

  8. 怎么使用7zip进行分批压缩_Win7系统如何让文件进行分卷压缩?分卷压缩包解压的方法...

    我们网络环境中必然需要各类数据传输,如果数据过多,在接收的时候就比较困难,然而一个叫压缩软件的应用解决了这个问题.但随之而来的另一个问题,如果压缩文件过大,传输速度就很慢,可以分卷进行传输吗?当然是可 ...

  9. 将一段压缩后的字符串解压,并且顺序输出

    将一段压缩后的字符串解压,并且顺序输出. 算法描述: 解压规则: 每个字符串后面跟着一个数字,表示这个字符重复的次数. 例如:'a5'解压后为'aaaaa', 'abc3'解压后为'abcabcbac ...

最新文章

  1. NSThread 多线程相关
  2. 每日学英语20040715
  3. boost::hana::greater_equal用法的测试程序
  4. 深度剖析目标检测算法YOLOV4
  5. mysql备份时候事务日志_SQLSERVER备份事务日志的作用
  6. TCP IP基础知识的复习
  7. python自动化报表定时跑_POINTer分享:Python如何做报表自动化
  8. iphone桌面上的圆圈怎么设置_苹果手机桌面上找不到便签记事本怎么办?有办法添加吗...
  9. 命令行中只用scala来运行一个spark应用
  10. 【网络】几种常见的协议
  11. 力扣-525 连续数组
  12. 应用前瞻||强化学习求解车间调度问题的未来
  13. 英特尔在移动时代的衰落或许不会影响苹果
  14. chrome浏览器js 导出excel
  15. GO语言之LiteIDE软件的安装与使用
  16. Unity脚本设置Animator单个状态的speed
  17. mysql查询优化-查询缓存
  18. 【C++】C++ 知识点100题
  19. R语言学堂推文索引-v5.9.1
  20. 使用Lanproxy搭建内网穿透服务完整教程

热门文章

  1. 用DOCKER安装及使用SSCHA
  2. 05-Python—列表、元祖、字典、集合操作大全:建议收藏
  3. 二维码生成工具微信小程序源码下载
  4. 机器学习算法终极对比:树模型VS神经网络
  5. 【优化覆盖】基于matlab粒子群算法优化无人机编队布局求解车载网络通信覆盖优化问题【含Matlab源码 2021期】
  6. 【转】ArcGIS server如何将自己的小地图叠加到Google maps或者Virtual Earth上
  7. SOPHP免费稳定的微信公众号开源框架
  8. sql server2008R2 ,全球国家sql
  9. android 调用oracle,Android 调用WCF实例详解
  10. NASA CEA 安装指南