Java壓縮類庫的使用-1.總述

來源:互聯網
上載者:User

  inkfish原創,請勿商業性質轉載,轉載請註明來源(http://blog.csdn.net/inkfish)。

  壓縮是編程中常見的技巧,多用於大檔案壓縮,資料流壓縮等。在Java類庫中,內建了jar、ZIP、GZIP、ZLIB等的支援(見java.util.zip、java.util.jar包)。另外在Apache項目下Ant中ant.jar的org.apache.tools.tar、org.apache.tools.zip、org.apache.tools.bzip2分別提供了tar、zip、bzip2的支援;Apache commons compress項目裡提供了對AR、BZIP、CPIO、GZP、TAR、ZIP的支援。7-zip 提供了LZMA格式的壓縮(public domain),QuickLZ 提供了quicklz格式的壓縮(GPL),oberhumer.com 提供LZO格式的壓縮(GPL),hadoop-gpl-compression 則對LZO的c實現用JNI進行封裝,提供更快捷的LZO壓縮。(來源:http://blog.csdn.net/inkfish)

  嚴格來說,TAR、AR、CPIO並不屬於壓縮軟體,而是一種打包軟體,它能把很多檔案、檔案夾打包成一個檔案,供壓縮程式壓縮。而咱們在windows中熟悉的zip、rar,嚴格的說是具備打包和壓縮功能的一種格式。(來源:http://blog.csdn.net/inkfish)

      因為本人在項目中需主要需要應用壓縮公用程式對網路中傳輸的資料流進行壓縮,因此重點關心對Stream的壓縮,而不關心對多個檔案的壓縮,這在代碼中也會有所體現。因此,本系列的代碼一般僅適用於壓縮流或壓縮一個檔案。(來源:http://blog.csdn.net/inkfish)

  LZMA、QuickLZ、LZO因為提供的類庫不支援stream形式壓縮或提供的example太難看懂,故不作測試。這裡還有一個需要提醒,Apache commons compress的tar、zip、bzip2來最初源於ant,但經過項目間遷移、演化,API及效能有所不同。(來源:http://blog.csdn.net/inkfish)

  所有的格式均提供壓縮和解壓兩個方法,再次提醒這裡所有代碼不適用於壓縮多個檔案、檔案夾。下面是抽象的壓縮、加壓縮類:(來源:http://blog.csdn.net/inkfish)

package study.inkfish.compress; import java.io.File; import java.io.IOException; public abstract class Compress { public void compress(File srcFile, File destFile) { destFile.getParentFile().mkdirs(); try { doCompress(srcFile, destFile); } catch (IOException ex) { ex.printStackTrace(); } } public void decompress(File srcFile, File destDir) { destDir.mkdirs(); try { doDecompress(srcFile, destDir); } catch (IOException ex) { ex.printStackTrace(); } } protected int bufferLen = 1024 * 1024;//buffer size: 1MByte protected abstract void doCompress(File srcFile, File destFile) throws IOException; protected abstract void doDecompress(File srcFile, File destDir) throws IOException; }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.