我愛我的家園!

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

           

          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">

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

          ?

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

          ?

          ?

          一個 ZIP 文件的普通格式

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

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

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

          ?

          ?

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

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

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

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

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

          ?

          ??????? b、文件數(shù)據(jù)

          ?

          ???????

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

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

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

          ?

          ?

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

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

          ?

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

          ???   目錄中文件文件頭標(biāo)記??? ? ?????? 4 bytes? (0x02014b50)

          ???   壓縮使用的 pkware 版本????????? 2 bytes

          ???   解壓文件所需 pkware 版本? ?????? 2 bytes

          ???   全局方式位標(biāo)記?? ??? ??????????? 2 bytes

          ???   壓縮方式????????????????????????2 bytes

          ???   最后修改文件時間??? ??????????? 2 bytes

          ???   最后修改文件日期??? ??????????? 2 bytes

          ???   CRC-32校驗??? ??????????? 4 bytes

          ???   壓縮后尺寸??????????????????????4 bytes

          ???   未壓縮尺寸?? ??? ??? ?????????? 4 bytes

          ???   文件名長度?? ??? ??? ?????????? 2 bytes

          ???   擴(kuò)展字段長度??? ?????????????? 2 bytes

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

          ???   磁盤開始號?? ??? ??? ?????????? 2 bytes

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

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

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

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

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

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

          ?

          ?

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

          ?

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

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

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

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

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

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

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

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

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

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

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

          導(dǎo)航

          統(tǒng)計

          公告

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

          常用鏈接

          留言簿(3)

          隨筆分類(5)

          隨筆檔案(9)

          文章分類(37)

          文章檔案(41)

          相冊

          語音技術(shù)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 彭州市| 高密市| 葵青区| 东明县| 旬邑县| 曲阳县| 边坝县| 枣阳市| 灯塔市| 博野县| 双峰县| 新郑市| 兴和县| 梁河县| 汾阳市| 吉首市| 奉贤区| 鲁山县| 随州市| 酒泉市| 阜新市| 松原市| 灌南县| 蓬安县| 沙坪坝区| 寿宁县| 福州市| 衡山县| 利辛县| 珠海市| 郸城县| 扎鲁特旗| 怀来县| 凤庆县| 井冈山市| 郯城县| 搜索| 雅安市| 桦南县| 普安县| 孙吴县|