最近工作过程中,需要在Android项目中对一个带密码的压缩文件进行解压 ,之前就知道Java API中提供了 java.util.zip.*;包来支持Java对于压缩文件的相关压缩,解压缩操作。所以,刚开始觉得这是一件很简单的事情,直接调用Java SDK相关API接口就可以直接解压了。

没有想到的是,堂堂JAVA君竟然没有提供解压带密码压缩文件的API,这一点确实不可思议,到现在也难以置信,JAVA啊,这可以当今世界最流行的编程语言之一!几番百度谷歌,终于承认,JDK自带的ZIP操作接口确实非常不完善,既不支持中文,也不支持密码,可用性不高。

但Java带密码解压真的没有办法了吗?也不一定,经过查询,网上有各种奇门妙招,像Apache提供的的zip解决方案,还有比较多的是借助开源项目实现。其中比较受欢迎的是winzipaes开源项目和Zip4J开源项目。

在这里,记录一下学习过程,或许以后就用了。

(1)winzipaes开源项目

winzipaes是Java操作ZIP文件的开源项目,支持密码,但不支持中文文件名。

具体使用方法可以到https://code.google.com/p/winzipaes/ 阅读详细文档,也可以使用以下命令check out源代码:

svn checkout http://winzipaes.googlecode.com/svn/trunk/winzipaes/ winzipaes-read-only

但网上大多反馈该开源项目使用起来并不太方便,我最终也没有尝试

(2)Zip4j开源项目

按照Zip4J官网(http://www.lingala.net/zip4j/)首页的介绍:Zip4j是一直专门用于Zip文件处理的JAVA库,具备以下功能特性:

Create,Add,Extract,Update,Remove files from a Zip file(针对ZIP压缩文件创建、添加、抽出、更新和移除文件)

Read/Write password protected Zip files(读写有密码保护的Zip文件)

Supports AES 128/256 Encryption (支持AES 128/256算法加密)

Supports Standard Zip Encryption (支持标准Zip算法加密)

Supports Zip64 format(支持zip64格式)

Supports Store (No Compression) and Deflate compression method(支持Store(非压缩)和Deflate压缩方法)

Create or extract files from Split Zip files(Ex:z01,z02,...zip) (针对分块ZIP创建和抽出文件)

Supports Unicode file names(支持Unicode编码文件名)

Progress Monitor(进度监控)

Zip4J 默认采用UTF-8编码,所以它支持中文,同时也支持密码,而且支持多种压缩算法,像AES 128/256算法加密,标准Zip算法加密等等,可以说功能强大,关键的是使用起来却非常简单,只需要几个简单的步骤:

1. 首先到Zip4j官网下载源码进行编译,生成jar(官网也提供已经编译好的jar),最新的版本是Zip4j_1.3.2.

1. 将Zip4j_1.3.2.jar包导入到我们的JAVA项目中

(1)对于使用Eclipse创建的普通工程(不需要源码环境编译),直接使用Eclipse Build path添加jar包就可以使用Zip4J API了。

(2)对于需要放到Android源码进行编译的项目(比如我们的SangforUpdater)来说,需要在项目的Android.mk中添加对第三方jar包的引用。

首先在根目录下创建libs目录(倘若不存在),将Zip4j_1.3.2.jar放到该目录下面。

另外修改Andorid.mk,添加以下代码:

3. 添加完jar包,就可以直接使用Zip4j提供的API操作zip文件了。比如对于我来说,我需要的仅仅是它能够帮助我解压带密码zip包即可.

ZipFile用于一个zip对象

isEncrypted( ) 判断zip是否需要解压密码

setPassword(String str)设置解压密码

extractAll(String destDir)将zip文件解压到目录中

简单几步就可以轻松实现带密码zip文件解压。

当然,如上面所说,Zip4j功能强大,并不仅仅限于解压简单的zip。还有很多丰富实用的功能,比如支持AES 128/256的加密,支持分卷ZIP等等,如果有兴趣,可以到官网http://www.lingala.net/zip4j/index.php具体了解一下。

android zip 开源 加密,Android带密码解压----Zip4J开源项目使用相关推荐

  1. linux带密码解压密码,linux 下文件加密压缩和解压的方法

    方法一:用tar命令 对文件加密压缩和解压 压缩: [html] view plain copy tar -zcf - filename |openssl des3 -salt -k password ...

  2. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )

    文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...

  3. python基础教程zip密码_python基础教程Python实现加密的RAR文件解压的方法(密码已知)...

    博主之前在网上找了很多资料,发现rarfile库不能直接调用,需要安装unrar模块,下面将详细介绍整个实现流程. 第一步:安装unrar模块,直接pip install unrar可能会找不到库,需 ...

  4. 根据链接下载zip文件并用密码解压

    根据链接下载zip文件并用密码解压(亲测可用) 导入所需要的pom(注意版本) 导入所需要的pom(注意版本) 导入所需要的pom(注意版本) <dependency><groupI ...

  5. Linux之zip加密压缩与解密解压(一百二十一)

    Linux之zip加密压缩与解密解压 1.zip加密压缩目录 # zip -rP Abc#123 tmp.zip test/2.unzip解密解压缩 # unzip -P Abc#123 tmp.zi ...

  6. ZIP 也能边下载边解压?流式解压技术揭秘!

    对于一个 ZIP 文件,由于标准的解压方式总是从读取文件的末尾开始的,因此必须下载完整个 ZIP 解压后才能访问.当用户通过网络访问 ZIP 文件时,下载解压所带来的耗时将大大降低用户体验.那么能不能 ...

  7. vb.net 解压缩(文件/文件夹解压缩,zip文件浏览,单文件解压,分卷压缩)

    vb.net 解压缩(文件/文件夹解压缩,zip文件浏览,单文件解压,分卷压缩) DLL:Ionic.Zip.dll 说明: 1.解压/压缩 显示加密进度及总进度. 2.zip文件打开,浏览内部文件. ...

  8. Java解压上传zip或rar文件,并解压遍历文件中的html的路径

    1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception {HttpSession session = request.getSes ...

  9. 使用Ionic.Zip压缩、分卷压缩、解压文件

    分卷压缩使用方法: int iMinLength = 100;//最小压缩包单位(100M)ZipHelper.Compress("../../../xxx.xx", " ...

最新文章

  1. NLP深度学习:近期趋势概述
  2. lncRNA研究利器之TANRIC
  3. mysql 中函数如何转存_MySQL函数转储存(当前月数据同步)
  4. EMR Spark Runtime Filter性能优化
  5. JVM技术周报第1期
  6. c语言删除元素1116,C语言网蓝桥杯1116 IP判断
  7. QCC原因分析阶段之常用工具 - QCC小组活动推行知识系列介绍(四)
  8. ftl模板导出excel_ftl方式导出excel
  9. 计算机方面的缩写大全
  10. 利用Python查找出Android项目中未使用的string
  11. GIS-空间分析(4)
  12. 《黑白团团队》第六次作业:团队项目系统设计改进与详细设计
  13. 常见编程错误及解决方法,避免踩雷
  14. shp数据中文乱码的一种恢复方法
  15. fgets函数的用法
  16. C语言利用瑞丽分布产生高斯白噪声
  17. nodejs shell交互_NodeJs交互式命令行工具Inquirer.js-开箱指南
  18. 如何做好网站的日常优化推广
  19. 龙芯翼龙2F小本gentoo升级ffmpeg到4.2.1
  20. min2440LCD驱动

热门文章

  1. 北京是个人吃人的地方
  2. js正则校验IP和IP段
  3. 阿里P8大牛推荐Java程序员必看的 13 本 Java 书籍
  4. 企业内网邮件钓鱼测试新手指南
  5. 不要模拟器也能在电脑上玩刺激战场、第五人格和王者荣耀了你知道吗?
  6. 基于JAVA迅腾游戏交流网站计算机毕业设计源码+系统+lw文档+部署
  7. gtx1060 能用catia软件吗_客户花200买GTX1060显卡,用了一周就坏了,这种当不要再上了!...
  8. 微信公众号菜单添加知乎链接
  9. 租房类APP--资产管理人员(在中国代为大少-驱逐租户-维修保护-中介)-房东-租户
  10. html不现实但占位置,css怎么占位但不显示?