java流与文件——ZIP文档
生活随笔
收集整理的這篇文章主要介紹了
java流与文件——ZIP文档
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【0】README
0.1) 本文描述轉(zhuǎn)自 core java volume 2, 旨在理解 java流與文件——ZIP文檔 的相關(guān)知識;
0.2) for source code, please visit https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/chapter1/ZipTest.java
【1】ZipInputStream + ZipOutputStream:
1.1)ZipInputStream: 讀入 zip 文件(zip文件 == ZipEntry)
1.2)ZipOutputStream: 寫出到 zip 文件;
【2】下面是典型的通讀ZIP文件的代碼序列:
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipname)); ZipEntry zipEntry; while((entry = zip.getNextEntry()) != null) {......zin.closeEntry(); } zin.close();2.1 )當(dāng)希望讀入某個 zip 項的內(nèi)容時, 我們可能并不想使用原生的read 方法, 通常,我們將使用某個更能勝任的流過濾器方法:
Scanner in = new Scanner(zis); while(in.hasNextLine())do sth with in.nextLine();- Warning) 在讀入單個ZIP 項之后后,不要關(guān)閉ZIP輸入流, 也不要將 其傳遞給 可能會關(guān)閉它的方法, 否則, 你就不能再讀入后序的項了;
2.2) 要寫出到ZIP文件, 使用 ZipOutputStream, 對于你希望放入到 ZIP 文件中的每一項, 都應(yīng)該創(chuàng)建一個 ZipEntry 對象, 并將文件名傳遞給 ZipEntry的構(gòu)造器, 它將設(shè)置其他諸如文件日期和解壓縮方法等參數(shù);
2.3)如果需要:
- step1)覆蓋這些設(shè)置;
- step2)需要調(diào)用 ZipOutputStream 的 putNextEntry 方法來開始寫出新文件, 并將文件數(shù)據(jù)發(fā)送到 ZIP流中;
- step3)當(dāng)完成時, 需要調(diào)用 closeEntry;然后你需要對所有你希望存儲的文件都重復(fù)這個過程, 如以下代碼:
Attention)
- A1) JAR 文件 只是帶有一個特殊項的ZIP文件, 這個項稱為清單;
- A2)可以使用 JarInputStream 和 JarOutputStream 類來讀寫清單項;
- A3) ZIP 流是一個能夠展示流的抽象化的強(qiáng)大之處的實例。 當(dāng)你讀入以壓縮格式存儲的數(shù)據(jù)時,不必?fù)?dān)心邊請求邊解壓數(shù)據(jù)的問題, 而且ZIP 格式的字節(jié)源并非必須是文件, 也可以是來自網(wǎng)絡(luò)連接的 ZIP 數(shù)據(jù);
總結(jié)
以上是生活随笔為你收集整理的java流与文件——ZIP文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux用户权限查看命令(linux
- 下一篇: java流与文件——java生成解压缩文