ZIP檔案組成

2021-10-25 09:40:09 字數 1837 閱讀 6657

壓縮原始檔資料區+壓縮源檔案目錄區+壓縮源檔案目錄結束標誌

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 檔案注釋 (不定長度)

讀取zip檔案

public class ziptest public static void main string args throws filenotfoundexception,ioexception zipinputstream zis new zipinputstream new fileinputs...

ZIP檔案壓縮

在開發過程中遇到乙個小需求,將附件中的檔案進行壓縮,壓縮檔案以前沒怎麼接觸過,記錄下,直接上 將附件中的檔案壓縮 param filemap 壓縮前的檔案 return map 壓縮後的檔案 private mapfilescompressionzip mapfilemap catch excepr...

檔案壓縮zip

壓縮檔案 原資料夾路徑 目的檔案路徑以及檔名稱 public static void createzip string sourcefilepath,string destinationzipfilepath 遞迴壓縮檔案 待壓縮的檔案或資料夾路徑 打包結果的zip檔案路徑 類似 d workspa...