java zip4j

Zip4j基本操作

江直穎 2016/12/30 11:24:40
3842







主題

Zip4j基本操作

文章簡介

介紹Zip4j套件,透過範例初步了解使用方式

作者:

江直穎

版本/產出日期:

V1.0/2016.12.27




1. 前言與簡介

文件用來提供Java開發人員初步了解Zip4j使用方式。

Java雖然有內建的Zip壓縮功能,但缺少幾種壓縮功能(例如Zip64格式等的標準Zip加密和AES加密),而Zip4j於是就基於這樣的原則被開發出來,是個簡單易用且功能皆具備的開放原始碼套件。




2. 目的

初步了解Zip4j壓縮/解壓縮、壓縮加密以及壓縮分割檔案操作方式。



3. 開始前準備

本架構建立於以下版本的環境:


JDK 8

Zip4j 1.3.2

Eclipse Mars.1 Release (4.5.1)




4. 程式範例


4.1、 使用Eclipse建立範例專案:


建立JavaProject 後加入 zip4j_1.3.2.jar 至BuildPath即可開始使用Zip4j功能。






4.2、 指定檔案壓縮成Zip檔案    


首先,找出需要壓縮的來源檔案

    

    

    

撰寫一份AddFileToZip.java,加入要壓縮的檔案名稱與路徑參照來源位置,

        並create zipFile 物件定義目標資料夾位置,透過zipFile.addFiles 方法執行打包壓縮檔案動作




驗證程式執行後產出Zip檔案,且壓縮後檔案也稍微縮小一些




驗證解壓縮後即為原本來源的三個檔案無誤



            

4.3、 將檔案打包成分割壓縮檔(超過1MB時分割)


首先取得一個超過1MB大小的檔案,此範例檔案為6.1MB


    

    

撰寫一份AddFileToSplitZip.java加入要壓縮檔案名稱與路徑參照來源位置,

使用zipFile.createZipFile 方法設定檔案大小以及是否要分割壓縮Flag設定為true




程式執行後驗證產出六個相同檔案名稱的壓縮檔案,附檔名會自動轉為z01…並依照檔案數量遞增




驗證單一檔案大小為1MB(1048576 Bytes)




驗證解壓縮後即為原本來源的三個檔案無誤


    

    

4.4、 將單一資料夾打包成壓縮檔案


撰寫一份AddFolderToZip.java加入要壓縮檔案名稱與路徑參照來源位置,

使用zipFile.createZipFile 方法設定檔案大小以及是否要分割壓縮Flag設定為true

    



將要打包的檔案放入單一資料夾內

    

    

    

執行程式後產出AddFolderToZip.zip檔案

    

    

    

解壓縮後驗證為打包前的needToZip資料夾內容

    



4.5、 讀取單一檔案透過串流方式並加入密碼驗證產出壓縮


撰寫一份AddFileStreamToEncryptZip.java加入要壓縮檔案名稱與路徑,載入至Stream中存放,

透過設定SourceExternalStream = true 時載入Stream內容,可定義解壓縮後的檔案名稱。


檔案加密方式則是透過設定EncryptFiles = true & EncryptionMethod = ENC_METHOD_STANDARD

並自行定義壓縮密碼於password欄位,最後使用zipFile.addStream 方法產出壓縮檔案




執行程式後產出AddFileStreamToEncryptZip.zip 檔案




執行解壓縮時需要鍵入定義的密碼



    

解壓縮後驗證為打包前的pdfTemplate.pdf檔案已被改名為export.pdf

    



4.6、 檢視壓縮檔中的檔案資訊


撰寫一份LookAllFilesInfoInZip.java 檢視壓縮檔案內的檔案資訊,載入來源Zip檔案

並透過 zipFile.getFileHeaders()方法取得 FileHeader List ,

然後各別從FileHeader 物件取得檔案名稱以及壓縮前後檔案大小等資訊


    

    

驗證程式輸出結果

    

    

    

4.7、 Zip檔案內容全部解壓縮


撰寫一份ExtractAllFiles.java 載入來源Zip檔案並透過 zipFile.extractAll方法,解壓縮到目標資料夾




驗證解壓縮後檢查目標資料夾內容檔案是否被正確產出


    

    

4.8、 Zip檔案各別解壓縮至指定目標資料夾


撰寫一份ExtractSingleFileFromZip.java 分別加密過Zip檔案以及未加密的Zip檔案,

透過zipFile.setPassword 設定解壓縮密碼,最後透過zipFile.extractFile 方法各別解壓縮檔案,

並可在此新增目標資料夾

    



程式執行後驗證檔案皆被正確地解壓縮至目標位置,新的目標資料夾也被正確地建立




5. 參考來源

Zip4j 官方網站

http://www.lingal a .net/zip4j/

江直穎