我愛我的家園!

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

           

          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 文件注釋??? ????????????? (不定長度)

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

          導航

          統計

          公告

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

          常用鏈接

          留言簿(3)

          隨筆分類(5)

          隨筆檔案(9)

          文章分類(37)

          文章檔案(41)

          相冊

          語音技術

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 嘉峪关市| 贞丰县| 会泽县| 丰镇市| 屯昌县| 博野县| 侯马市| 屯门区| 天祝| 海丰县| 南岸区| 兰溪市| 保康县| 海伦市| 普洱| 防城港市| 逊克县| 民勤县| 云浮市| 山西省| 诸城市| 仁怀市| 青岛市| 墨脱县| 原平市| 昆山市| 隆安县| 合江县| 丰原市| 镇沅| 神池县| 龙海市| 镇平县| 罗田县| 阳春市| 芜湖市| 镇宁| 肇庆市| 镇平县| 康平县| 莎车县|