我愛我的家園!

          成功在于你是否努力,希望在于你是否相信自己!

           

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

          ?

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

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

          文檔說明

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

          ?

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

          2002-10-28 16:32:25

          ?

          本文僅作為技術(shù)參考資料,我盡力的保證文檔的內(nèi)容同原始技術(shù)文檔在結(jié)構(gòu)和描述上的一致,若有不當(dāng)?shù)牡胤秸堃娬彙?span lang="EN-US">

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

          ?

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

          ?

          ?

          一個 ZIP 文件的普通格式

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

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

          ??????? 壓縮源文件數(shù)據(jù)區(qū)+壓縮源文件目錄區(qū)+壓縮源文件目錄結(jié)束標志

          ?

          ?

          ????1、壓縮源文件數(shù)據(jù)區(qū)

          ??? 在這個數(shù)據(jù)區(qū)中每一個壓縮的源文件/目錄都是一條記錄,記錄的格式如下:
          ??????

          ?????? [文件頭+ 文件數(shù)據(jù) + 數(shù)據(jù)描述符]
          ?
          ?????? a、文件頭結(jié)構(gòu)

          ?????????組成???? ??????????????? 長度
          ??????文件頭標記??? ????????????? 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、文件數(shù)據(jù)

          ?

          ???????

          ??????? c、數(shù)據(jù)描述符

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

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

          ?

          ?

          ???? 2、壓縮源文件目錄區(qū)

          ???? 在這個數(shù)據(jù)區(qū)中每一條紀錄對應(yīng)在壓縮源文件數(shù)據(jù)區(qū)中的一條數(shù)據(jù)

          ?

          ??    組成?? ??? ??? ???  ??????????? 長度

          ???   目錄中文件文件頭標記??? ? ?????? 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

          ???   內(nèi)部文件屬性??? ?????????????? 2 bytes

          ???   外部文件屬性??? ?????????????? 4 bytes

          ??? ??? 局部頭部偏移量??? ??? ????????? 4 bytes

          ???   文件名?? ??? ??? ??????????? (不定長度)

          ???   擴展字段??? ??? ??????????? (不定長度)

          ??? ??? 文件注釋??? ??? ??????????? (不定長度)

          ?

          ?

          ????3、壓縮源文件目錄結(jié)束標志

          ?

          ???    組成?? ??? ??? ???  ????????? 長度

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

          ??????? 當(dāng)前磁盤編號?? ??? ??? ???????? 2 bytes

          ??? ??? 目錄區(qū)開始磁盤編號????????????? 2 bytes

          ???   本磁盤上紀錄總數(shù)??? ? ?????????? 2 bytes

          ???   目錄區(qū)中紀錄總數(shù)??????? ???????? 2 bytes

          ???   目錄區(qū)尺寸大小?????????????????? 4 bytes

          ???   目錄區(qū)對第一張磁盤的偏移量??????? 4 bytes

          ???   ZIP 文件注釋長度??? ??????????? 2 bytes

          ???   ZIP 文件注釋??? ????????????? (不定長度)

          posted on 2008-09-04 14:53 死神 閱讀(1121) 評論(0)  編輯  收藏 所屬分類: 文件格式

          導(dǎo)航

          統(tǒng)計

          公告

          歡迎大家來到我的個人世界!

          常用鏈接

          留言簿(3)

          隨筆分類(5)

          隨筆檔案(9)

          文章分類(37)

          文章檔案(41)

          相冊

          語音技術(shù)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 光山县| 藁城市| 南部县| 绍兴市| 平乡县| 枝江市| 鄂州市| 高尔夫| 兴城市| 汕头市| 莎车县| 宽甸| 巴林右旗| 安乡县| 临颍县| 亳州市| 遂川县| 青阳县| 城市| 青川县| 景德镇市| 淅川县| 兖州市| 鹤壁市| 洪泽县| 铜山县| 玉田县| 安西县| 永州市| 江北区| 金昌市| 茶陵县| 买车| 灌云县| 罗田县| 齐河县| 略阳县| 阿拉善右旗| 泰宁县| 龙口市| 平原县|