zlib,gzip,zip,7z壓縮的區別

來源:互聯網
上載者:User

zlib是一種資料壓縮程式庫,它的設計目標是處理單純的資料(而不管資料的來源是什麼)。

gzip是一種檔案壓縮公用程式(或該壓縮公用程式產生的壓縮檔格式),它的設計目標是處理單個的檔案。gzip在壓縮檔中的資料時使用的就是zlib。為了儲存與檔案屬性有關的資訊,gzip需要在壓縮檔(*.gz)中儲存更多的頭資訊內容,而zlib不用考慮這一點。但gzip只適用於單個檔案,所以我們在UNIX/Linux上經常看到的壓縮包尾碼都是*.tar.gz或*.tgz,也就是先用tar把多個檔案打包成單個檔案,再用gzip壓縮的結果。

zip是適用於壓縮多個檔案的格式(相應的工具有PkZip和WinZip等),因此,zip檔案還要進一步包含檔案目錄結構的資訊,比gzip的頭資訊更多。但需要注意,zip格式可採用多種壓縮演算法,我們常見的zip檔案大多不是用zlib的演算法壓縮的,其壓縮資料的格式與gzip大不一樣。

Java SDK提供了對上述三種壓縮技術的支援:Inflater類和Deflater類直接用zlib庫對資料壓縮/解壓縮,GZIPInputStream類和GZIPOutputStream類提供了對gzip格式的支援,ZipFile、ZipInputStream、ZipOutputStream則用於處理zip格式的檔案。

所以,你應當根據你的具體需求,選擇不同的壓縮技術:如果只需要壓縮/解壓縮資料,你可以直接用zlib實現,如果需要產生gzip格式的檔案或解壓其他工具的壓縮結果,你就必須用gzip或zip等相關的類來處理了。

【DEFLATE】

DEFLATE 是同時使用了 LZ77 演算法與哈夫曼編碼的一個無損資料壓縮演算法。它最初是由 Phil Katz 為他的 PKZIP 歸檔工具第二版所定義的,後來定義在 RFC1951 規範中。

人們普遍認為 DEFLATE 不受任何專利所制約,並且在 LZW(GIF 檔案格式使用)相關的專利失效之前,這種格式除了在ZIP檔案格式中得到應用之外也在 gzip 壓縮檔以及 PNG 影像檔中得到了應用。

DEFLATE 壓縮與解壓的原始碼可以在自由、通用的壓縮庫 zlib 上找到。

更高壓縮率的 DEFLATE 是 7-zip 所實現的。AdvanceCOMP 也使用這種實現,它可以對 gzip、PNG、MNG 以及 ZIP 檔案進行壓縮從而得到比 zlib 更小的檔案大小。在 Ken Silverman 的 KZIP 與 PNGOUT 中使用了一種更加高效同時要求更多使用者輸入的 DEFLATE 程式。

【INFLATE】

inflate是GZip, PNG等廣泛使用的解壓演算法,linux也使用inflate對核心進行解壓.inflate的解壓演算法使用的第3種快速解壓法的一個子集,它不考慮LONG_CODE,同時把SAME_LENGTH合并到MEDIUM_CODE。而對於規則的SAME_LENGTH編碼,比如length和distance編碼,inflate則使用額外的base和extra表示。這是因為在構造一般的尋找表時,雖然對於SAME_LENGTH首碼可以不構造副表,但我們需要另外一個表格來儲存符號的順序,而這個表格的空間可能更大。但對於length和distance編碼,他們的順序是遞增的,所以無需額外的表格來儲存符號的順序。

inflate使用root表示上述的b,尋找表的資料結構為code.主表和副同時儲存在inflate_state結構中的大數組codes[ENOUGH]中.表的建構函式位於inftrees.c檔案的inflate_table中.

【7z】

7z 是一種新的壓縮格式,它擁有目前最高的壓縮比。

7z 已公開了結構編輯功能,所以它可以支援任何一種新的壓縮演算法。到目前為止,下列壓縮演算法已被整合到了 7z 中:

壓縮演算法  備忘 LZMA  LZ77 改良和最佳化演算法後的最新版本 PPMD  基於 Dmitry Shkarin 之上的演算法 PPMdH 並加以最佳化 BCJ  32-位 x86 可執行檔轉換程式 BCJ2  32-位 x86 可執行檔轉換程式 BZip2  標準 BWT 演算法 Deflate  標準 LZ77-based 演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.