2011-03-19 43 views
11

我需要從我的java程序創建一個zip文件。java庫使用Zip文件

我需要一個能夠創建壓縮文件並存儲條目中的文本和文件的庫,最重要的是我需要它能夠存儲整個目錄(一個包含多個其他目錄級別的目錄每個文件都有一些文件)。

你能告訴我一個嗎?

回答

9

一種做處理Zip文件(即壓縮)的硬零件庫是內置的到Java SE(java.util.zip):

http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/package-summary.html

爲了您的更高層次的功能它不會是難以編寫一些遞歸遍歷目錄並將文件複製到ZipOutputStream的函數 - 可能少於50行代碼。

http://www.javareference.com/jrexamples/viewexample.jsp?id=108上有一個很好的例子 - 它需要一點點工作來完成單個文件。

+0

但java.util.zip無法保存整個目錄,我需要自己編寫它! – RYN 2011-03-19 13:33:14

+0

是真的,你必須遍歷目錄結構並把東西轉儲到'ZipOutputStream'中。 – Alnitak 2011-03-19 13:35:24

+0

順便說一句,那個例子是borked。它有一些主要的編譯問題(比如沒有正確地遍歷目錄中的文件)。 – stevebot 2011-04-01 19:26:09

4

在這樣的領域,通常需要從Apache(或者更具體的說:Apache Commons)來考慮。我發現這個:http://commons.apache.org/compress/zip.html(我沒有檢查過它)。

+0

它似乎只會使「更好」的zip文件,它似乎不包括目錄遍歷或任何實際上將磁盤文件複製到壓縮文件中的操作。 – Alnitak 2011-03-19 14:08:13

21

退房Zip4j - http://www.lingala.net/zip4j/

我碰到這個問題今天我拒絕做這樣低的水平廢話了JDK要我們做。希望這個小圖書館將工作

+2

它甚至可以通過Maven獲得:http://mvnrepository.com/artifact/net.lingala.zip4j/zip4j – ripper234 2012-03-29 14:51:06

3

有一個著名的Java庫7zip的結合,你可以檢查出來的http://sevenzipjbind.sourceforge.net/

+0

7zip與zip不一樣 – Alnitak 2012-05-10 17:05:34

+6

從個人經驗來看,7zip庫的Java綁定能夠處理Zip,GZip, RAR和其他格式,用於閱讀和寫作。 – 2012-06-11 14:35:26

4

,你可以檢查出另一種選擇是ZT-ZIP從Maven的中央和項目頁面在https://github.com/zeroturnaround/zt-zip

它有標準的打包和拆包功能(在流和文件系統)+大量的輔助方法測試檔案中的文件或添加/刪除條目。

+0

太多的依賴關係......但不錯的代碼。 – marcolopes 2013-11-01 14:43:35

+0

目前唯一的依賴是org.slf4j.slf4j-api – toomasr 2014-09-03 08:47:59