<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22,comments - 35,trackbacks - 0

    JDK API 中,定義了多種類(lèi)型用于創(chuàng)建 ZIP 格式壓縮文件的 API 。程序設(shè)計(jì)人員在開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用程序時(shí),可以基于這些 API ,編寫(xiě)將原始數(shù)據(jù)壓縮成為 ZIP 格式的壓縮數(shù)據(jù),便于網(wǎng)絡(luò)傳輸。那么, ZIP 壓縮格式的定義形式是什么呢?

    ZIP 壓縮格式是在基于互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)傳輸過(guò)程中,被廣泛采用的數(shù)據(jù)文件壓縮格式。由于 ZIP 格式壓縮文件可由多個(gè)壓縮源文件構(gòu)成,因此,在單個(gè)壓縮文件內(nèi)容的最后,是整個(gè)壓縮文件的名稱(chēng)和定義目錄結(jié)構(gòu)的描述內(nèi)容。在創(chuàng)建 ZIP 格式壓縮文件過(guò)程中,其文件內(nèi)容構(gòu)成為:

    [ 當(dāng)前文件頭+壓縮數(shù)據(jù)+數(shù)據(jù)描述 ] . . .

    [ 目錄和文件結(jié)構(gòu) ]

    ZIP 壓縮格式的文件頭描述字段和壓縮數(shù)據(jù)描述內(nèi)容字段的名稱(chēng)和占用字節(jié)數(shù)如下表所示:

    1 ZIP 格式壓縮文件文件頭和壓縮數(shù)據(jù)描述內(nèi)容

    文件頭 壓縮數(shù)據(jù)描述
    字段名稱(chēng) 占用位數(shù)(字節(jié))? 字段名稱(chēng) 占用位數(shù)(字節(jié))
    文件頭描述 4 文件頭描述 4
    版本類(lèi)型 2 版本類(lèi)型 2
    通用位標(biāo)志 2 通用位標(biāo)志 2
    壓縮方法 2 壓縮方法 2
    最后修改文件時(shí)間 2 最后修改文件時(shí)間 2
    最后修改文件數(shù)據(jù) 2 最后修改文件數(shù)據(jù) 2
    CRC-32 4 CRC-32 4
    壓縮字節(jié)數(shù) 4 壓縮字節(jié)數(shù) 4
    未壓縮字節(jié)數(shù) 4 未壓縮字節(jié)數(shù) 4
    文件名長(zhǎng)度 2 文件名長(zhǎng)度 2
    附加字段長(zhǎng)度 2 附加字段長(zhǎng)度 2
    文件名 可變長(zhǎng)度 文件名 可變長(zhǎng)度
    附加文件名 可變長(zhǎng)度 附加文件名 可變長(zhǎng)度

    PATH o:connecttype="rect" gradientshapeok="t" o:extrusionok="f" />SHAPE id=_x0000_i1025 style="WIDTH: 375pt; HEIGHT: 255pt" type="#_x0000_t75" alt="" />/SPAN>

    ZIP 壓縮文件中目錄和文件結(jié)構(gòu)描述內(nèi)容如下表所示:

    2 ZIP 格式壓縮文件目錄結(jié)構(gòu)描述內(nèi)容

    文件構(gòu)成信息描述 目錄結(jié)構(gòu)信息
    字段名稱(chēng) 占用位數(shù)(字節(jié)) 字段名稱(chēng) 占用位數(shù)(字節(jié))
    文件頭描述 4 目錄結(jié)束標(biāo)志 4
    版本類(lèi)型 2 磁盤(pán)號(hào) 2
    可解壓縮版本類(lèi)型 2 目錄開(kāi)始位置的磁盤(pán)號(hào) 2
    通用位描述 2 磁盤(pán)目錄名稱(chēng) 2
    壓縮方法 2 目錄結(jié)構(gòu) 2
    最后修改文件日期 2 目錄字節(jié)數(shù) 4
    最后修改文件數(shù)據(jù) 4 起始磁盤(pán)號(hào) 4
    CRC-32 4 壓縮文件描述長(zhǎng)速度 2
    壓縮字節(jié)數(shù) 4 壓縮文件描述 可變長(zhǎng)度
    未壓縮字節(jié)數(shù) 2
    文件名長(zhǎng)度 2
    附加字段長(zhǎng)度 2
    文件描述長(zhǎng)度 2
    起始磁盤(pán)號(hào) 2
    內(nèi)部文件屬性 4
    外部文件屬性 4 附加文件名 可變
    文件頭起始位置 4 附加文件名 可變

    /SPAN>

    當(dāng)然,在利用 JDK API 創(chuàng)建壓縮數(shù)據(jù)文件時(shí),不需要詳細(xì)了解上述 ZIP 文件定義格式。但是, JDK 中定義的多種類(lèi)型用于進(jìn)行數(shù)據(jù)壓縮和管理的對(duì)象,正是根據(jù)上述格式實(shí)現(xiàn)數(shù)據(jù)壓縮和解壓縮的。

    2 JDK API ZIP 壓縮格式支持對(duì)象

    ZIP 壓縮格式是在 Windows 操作系統(tǒng)環(huán)境中經(jīng)常應(yīng)用的壓縮格式。 ZIP 壓縮格式的壓縮比高、壓縮速度快,因而成為利用 Java 語(yǔ)言定義需要在網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸時(shí),數(shù)據(jù)壓縮格式的首選。

    JDK API java.util.zip 包中,定義了多種類(lèi)型用于創(chuàng)建和讀取 zip 壓縮格式文件的對(duì)象,常用對(duì)象的定義形式和主要成員方法如下:

    ●ZipEntry

    由于可以將多個(gè)文件壓縮到同一壓縮文件中,因此, JDK API 中定義的 ZipEntry 對(duì)象用于標(biāo)識(shí) ZIP 壓縮文件中每個(gè)原始文件的入口。該對(duì)象的定義結(jié)構(gòu)為:

    對(duì)象定義結(jié)構(gòu):

    java.util.zip.ZipEntry

    靜態(tài)成員變量:

    CENATT CENATX CENCRC … …

    這些靜態(tài)成員變量用于定義在壓縮過(guò)程中采用的壓縮算法。

    構(gòu)造方法:

    ZipEntry(String name) 采用字符串類(lèi)型參數(shù) name 定義壓縮文件中的原始文件入口對(duì)象實(shí)例。

    ZipEntry(ZipEntry e) 采用 ZipEntry 對(duì)象類(lèi)型參數(shù) e 定義壓縮文件中的原始文件入口對(duì)象實(shí)例。

    成員方法:

    long getCompressedSize() 獲取壓縮文件的大小

    void setCompressedSize(long csize) 設(shè)置壓縮文件的大小

    int getMethod() 獲取壓縮時(shí)采用的壓縮算法

    void setMethod(int method) 設(shè)置壓縮算法

    long getSize() 獲取壓縮原始文件的大小

    void setSize(long size) 設(shè)置壓縮原始文件的大小

    long getTime() 獲取壓縮文件入口標(biāo)識(shí)的定義時(shí)間

    void setTime(long time) 設(shè)置壓縮文件入口標(biāo)識(shí)的定義時(shí)間

    boolean isDirectory() 判斷該壓縮入口標(biāo)識(shí)是否代表目錄

    String getName() 返回壓縮入口標(biāo)識(shí)的名稱(chēng)

    ●ZipFile

    該對(duì)象用于從 ZIP 壓縮格式文件中讀取壓縮原始文件的入口。

    對(duì)象定義結(jié)構(gòu):

    java.util.zip.ZipFile

    靜態(tài)成員變量:

    CENATT CENATX CENCRC … …

    這些靜態(tài)成員變量用于定義在壓縮過(guò)程中采用的壓縮算法。

    構(gòu)造方法:

    ZipFile(File file) File 對(duì)象代表的壓縮文件中讀取壓縮原始文件。

    ZipFile(File file, int mode) File 對(duì)象代表的壓縮文件中讀取壓縮原始文件,并且可以指定 ZIP 文件讀取模式。

    ZipFile(String name) 打開(kāi)字符串參數(shù) name 表示的 ZIP 壓縮文件。

    成員方法:

    void close() 關(guān)閉被讀取的 ZIP 壓縮文件

    Enumeration entries() 枚舉出 ZIP 壓縮文件中的各個(gè)壓縮原始文件入口( Entry

    ZipEntry getEntry(String name) 獲取壓縮文件中的各個(gè)壓縮原始文件入口

    InputStream getInputStream(ZipEntry entry) 通過(guò) ZIP 壓縮文件中的入口創(chuàng)建輸入流對(duì)象

    String getName() 獲取 ZIP 壓縮文件的名稱(chēng)

    int size() 獲取壓縮文件中的入口數(shù)量

    ●ZipInputStream

    該對(duì)象用于從 ZIP 壓縮文件中創(chuàng)建輸入流對(duì)象。

    對(duì)象定義結(jié)構(gòu):

    java.util.zip.ZipInputStream

    靜態(tài)成員變量:

    CENATT CENATX CENCRC … …

    這些靜態(tài)成員變量用于定義在壓縮過(guò)程中采用的壓縮算法。

    構(gòu)造方法:

    ZipInputStream(InputStream in) 應(yīng)用輸入流對(duì)象創(chuàng)建從 ZIP 文件中讀取數(shù)據(jù)的輸入流對(duì)象。

    成員方法:

    int available() 判斷當(dāng)前入口指定的壓縮原始文件中是否還有未讀數(shù)據(jù)。

    void close() 關(guān)閉 ZIP 輸入流對(duì)象

    void closeEntry() 關(guān)閉被讀取的 ZIP 入口,并移動(dòng)到下一壓縮原始文件入口。

    protectedZipEntry createZipEntry(String name) 利用指定的名稱(chēng)創(chuàng)建 ZipEntry 對(duì)象實(shí)例。

    ZipEntry getNextEntry() 將輸入流對(duì)象移動(dòng)到下一入口對(duì)象。

    int read(byte[] b, int off, int len) 從當(dāng)前 ZipEntry 中讀取字節(jié)數(shù)組。

    long skip(long n) 將輸入流指定的讀取數(shù)據(jù)位置移動(dòng) n 個(gè)字節(jié)。

    ●ZipOutputStream

    該數(shù)據(jù)輸出流對(duì)象用于創(chuàng)建 ZIP 壓縮文件。

    對(duì)象定義結(jié)構(gòu):

    java.util.zip.ZipOutputStream

    靜態(tài)成員變量:

    CENATT CENATX CENCRC … …

    這些靜態(tài)成員變量用于定義在壓縮過(guò)程中采用的壓縮算法。

    構(gòu)造方法:

    ZipOutputStream(OutputStream out) 應(yīng)用輸出流對(duì)象實(shí)例創(chuàng)建 ZIP 格式輸出流對(duì)象。

    成員方法:

    void close() 關(guān)閉 ZIP 輸出流對(duì)象。

    void closeEntry() 關(guān)閉當(dāng)前 ZIP 輸出流對(duì)象指定的 Entry ,并移動(dòng)到下一 Entry

    void putNextEntry(ZipEntry e) ZIP 壓縮文件中創(chuàng)建新的壓縮原始文件入口。

    void setComment(String comment) 設(shè)置壓縮文件的說(shuō)明信息。

    void setMethod(int method) 設(shè)置采用的壓縮算法。

    void write(byte[] b, int off, int len) 通過(guò) ZIP 輸出流對(duì)象向壓縮文件中輸出字節(jié)數(shù)組 b

    posted on 2006-06-05 17:48 kelven 閱讀(1760) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java
    主站蜘蛛池模板: 免费A级毛片在线播放不收费| 免费永久看黄在线观看app| 国产日产成人免费视频在线观看| 亚洲人AV永久一区二区三区久久| 亚洲一卡2卡三卡4卡有限公司| 亚洲欧美日本韩国| 色www永久免费网站| 毛片免费在线播放| 亚洲VA中文字幕无码一二三区 | 亚州免费一级毛片| 亚洲AV中文无码乱人伦| 在线观看亚洲人成网站| 无套内射无矿码免费看黄| 91福利免费视频| 亚洲男人的天堂一区二区| 亚洲国产日韩在线一区| 国产精品综合专区中文字幕免费播放| 无码人妻精品中文字幕免费东京热| 亚洲毛片不卡av在线播放一区| 久久久久亚洲AV无码观看 | 久久久久久亚洲精品无码| 99视频免费播放| 亚洲精品一级无码鲁丝片| 亚洲精品综合在线影院| 黄网站色视频免费在线观看的a站最新| 天天天欲色欲色WWW免费| 久久青青草原亚洲av无码app| 成年网在线观看免费观看网址 | 亚洲av无码av在线播放| 2022久久国产精品免费热麻豆| 亚洲综合激情另类专区| 亚洲中文字幕无码久久2020 | 免费黄网站在线看| 亚洲国产av无码精品| 亚洲狠狠成人综合网| 久久99精品视免费看| 国产精品亚洲精品日韩已方| 亚洲AV无码成人网站在线观看| 成人午夜免费福利视频| 亚洲国产精品久久久久久| 久青草视频97国内免费影视|