轉發:ZIP文件格式詳解(一)——文件數據格式


ZIP文件格式詳解(一)——文件數據格式

----------------------------------------------------------------------------------

文檔說明

 

ZIP 格式的壓縮文件是我們常用的壓縮格式之一,他以其通用性、壓縮比高而在全球范圍內有很多的用戶,本文簡單介紹 ZIP 文件格式和算法。本文主要參照 http://www.pkware.com 提供的 appnote.txt 文件,你可以從http://www.pkware.com/download.html 下載 appnote.zip 得到這個文件。

 

作者:昏睡終日(Seread@163.com

2002-10-28 16:32:25

 

本文僅作為技術參考資料,我盡力的保證文檔的內容同原始技術文檔在結構和描述上的一致,若有不當的地方請見諒。

本文檔的作者不為使用本文檔信息所造成的任何損失負責。

 

----------------------------------------------------------------------------------

 

 

 

 

 

 

 

一個 ZIP 文件的普通格式

----------------------

    一個 ZIP 文件由三個部分組成:
        

        壓縮源文件數據區+壓縮源文件目錄區+壓縮源文件目錄結束標志

 

 

    1、壓縮源文件數據區

    在這個數據區中每一個壓縮的源文件/目錄都是一條記錄,記錄的格式如下:
      

       [文件頭+ 文件數據 + 數據描述符]
 
       a、文件頭結構

         組成                     長度
      文件頭標記                  4 bytes  (0x04034b50)
      解壓文件所需 pkware 版本    2 bytes
      全局方式位標記              2 bytes
    壓縮方式                    2 bytes
    最后修改文件時間             2 bytes
    最后修改文件日期             2 bytes
    CRC-32校驗                  4 bytes
    壓縮后尺寸                  4 bytes
    未壓縮尺寸                  4 bytes
    文件名長度                  2 bytes

      擴展記錄長度                2 bytes
    文件名                     (不定長度)
    擴展字段                   (不定長度)

      

        b、文件數據

 

       

        c、數據描述符

    組成     長度
    CRC-32校驗                  4 bytes
    壓縮后尺寸                   4 bytes
    未壓縮尺寸                   4 bytes

      這個數據描述符只在全局方式位標記的第3位設為1時才存在(見后詳解),緊接在壓縮數據的最后一個字節后。這個數據描述符只用在不能對輸出的 ZIP 文件進行檢索時使用。例如:在一個不能檢索的驅動器(如:磁帶機上)上的 ZIP 文件中。如果是磁盤上的ZIP文件一般沒有這個數據描述符。

 

 

     2、壓縮源文件目錄區

     在這個數據區中每一條紀錄對應在壓縮源文件數據區中的一條數據

 

      組成                            長度

      目錄中文件文件頭標記             4 bytes  (0x02014b50)

      壓縮使用的 pkware 版本          2 bytes

      解壓文件所需 pkware 版本         2 bytes

      全局方式位標記                   2 bytes

      壓縮方式                        2 bytes

      最后修改文件時間                 2 bytes

      最后修改文件日期                 2 bytes

      CRC-32校驗                 4 bytes

      壓縮后尺寸                      4 bytes

      未壓縮尺寸                      4 bytes

      文件名長度                      2 bytes

      擴展字段長度                    2 bytes

      文件注釋長度                    2 bytes

      磁盤開始號                      2 bytes

      內部文件屬性                    2 bytes

      外部文件屬性                    4 bytes

        局部頭部偏移量                  4 bytes

      文件名                       (不定長度)

      擴展字段                     (不定長度)

        文件注釋                     (不定長度)

 

 

    3、壓縮源文件目錄結束標志

 

       組成                          長度

        目錄結束標記                    4 bytes  (0x02014b50)

        當前磁盤編號                    2 bytes

        目錄區開始磁盤編號              2 bytes

      本磁盤上紀錄總數                 2 bytes

      目錄區中紀錄總數                 2 bytes

      目錄區尺寸大小                   4 bytes

      目錄區對第一張磁盤的偏移量        4 bytes

      ZIP 文件注釋長度                 2 bytes

      ZIP 文件注釋                   (不定長度)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM