Java壓縮處理類庫:ZeroTurnaround ZIP類庫

fmms 12年前發布 | 18K 次閱讀 Java

在 Java 平臺上有很多官方的和非官方、第三方的壓縮工具包,它們各有各的長處,比如 Oracle 官方的 java.util.zip 類庫,Apache 網站上的 Apache Commons Compress 類庫,或者 Chilkat Java Zip 類庫,但總體說來,這些類庫提供都是低級別的 API,操作起來都不是很方便,而今天推薦給大家的這個叫做 ZeroTurnaround (簡稱 zt-zip)的壓縮類庫的特點就是方便、簡易,我們可以比較一下,如果用標準的 Java 類庫壓縮一個目錄里的所有文件,你需要寫出的代碼大概是這樣:

    File dir = new File ("demo");
    ZipOutputStream out = new ZipOutputStream (new FileOutputStream ("demo.zip"));
    try {
      File[] files = dir.listFiles ();
      for (int i = 0; i < files.length; i++) {
        File file = files[i];
        ZipEntry entry = new ZipEntry (file.getName ());
        entry.setSize (file.length ());
        entry.setTime (file.lastModified ());
        out.putNextEntry (entry);
        FileInputStream in = new FileInputStream (file);
        try {
          IOUtils.copy (in, out);
        } finally {
          IOUtils.closeQuietly (in);
        }
        out.closeEntry ();
      }
    } finally {
      IOUtils.closeQuietly (out);
    }
而使用 zt-zip 工具包,你的代碼就變成了只有一行:
ZipUtil.pack (new File ("demo"), new File ("demo.zip"));

你不需要自己去關閉文件的數據流,這個類庫的接口自動替你你做了這些。

可能經常做 Java 壓縮編程的人會提到另外一個壓縮類庫:TrueZIP,這也是一個非常好的類庫,而 zt-zip 跟它比起來的一個優勢是:消耗內存很少,這是因為 TrueZIP 大量的使用了虛擬機的堆內存,而 zt-zip 卻是只是以數據流的形式進行操作,當然這也是 zt-zip 的 API 提供的功能很有針對性、不是 TrueZIP API 那樣通用的原因。

你可以在 Github 上下載這個類庫

來自: 外刊IT評論

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!