Android帶密碼解壓----Zip4J開源項目使用

最近工作過程中,需要在Android項目中對一個帶密碼的壓縮文件進行解壓 ,之前就知道Java API中 提供了 java.util.zip.*;來支持Java對於壓縮文件的相關壓縮,解壓縮操作。所以,剛開始覺得這是一件很簡單的事情,直接調用Java SDK相關API接口就可以直接解壓了。

沒有想到的是,堂堂JAVA君竟然沒有提供解壓帶密碼壓縮文件的API, 這一點確實不可思議,到現在也難以置信,JAVA啊,這可以當今世界最流行的編程語言之一!幾番百度谷歌,終於承認,JDK自帶的ZIP操作接口確實非常不完善,既不支持中文,也不支持密碼,可用性不高。

但Java帶密碼解壓真的沒有辦法了嗎?也不一定,經過查詢,網上有各種奇門妙招,Apache提供的的zip解決方案,還有比較多的是藉助開源項目實現。其中比較受歡迎的是winzipaes開源項目和Zip4J開源項目。

在這裏,記錄一下學習過程,或許以後就用了。

1winzipaes開源項目

winzipaesJava操作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具體瞭解一下。




發佈了60 篇原創文章 · 獲贊 173 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章