java流与文件——ZIP文档
生活随笔
收集整理的這篇文章主要介紹了
java流与文件——ZIP文档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【0】README
0.1) 本文描述轉自 core java volume 2, 旨在理解 java流與文件——ZIP文檔 的相關知識;
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 )當希望讀入某個 zip 項的內容時, 我們可能并不想使用原生的read 方法, 通常,我們將使用某個更能勝任的流過濾器方法:
Scanner in = new Scanner(zis); while(in.hasNextLine())do sth with in.nextLine();- Warning) 在讀入單個ZIP 項之后后,不要關閉ZIP輸入流, 也不要將 其傳遞給 可能會關閉它的方法, 否則, 你就不能再讀入后序的項了;
2.2) 要寫出到ZIP文件, 使用 ZipOutputStream, 對于你希望放入到 ZIP 文件中的每一項, 都應該創建一個 ZipEntry 對象, 并將文件名傳遞給 ZipEntry的構造器, 它將設置其他諸如文件日期和解壓縮方法等參數;
2.3)如果需要:
- step1)覆蓋這些設置;
- step2)需要調用 ZipOutputStream 的 putNextEntry 方法來開始寫出新文件, 并將文件數據發送到 ZIP流中;
- step3)當完成時, 需要調用 closeEntry;然后你需要對所有你希望存儲的文件都重復這個過程, 如以下代碼:
Attention)
- A1) JAR 文件 只是帶有一個特殊項的ZIP文件, 這個項稱為清單;
- A2)可以使用 JarInputStream 和 JarOutputStream 類來讀寫清單項;
- A3) ZIP 流是一個能夠展示流的抽象化的強大之處的實例。 當你讀入以壓縮格式存儲的數據時,不必擔心邊請求邊解壓數據的問題, 而且ZIP 格式的字節源并非必須是文件, 也可以是來自網絡連接的 ZIP 數據;
總結
以上是生活随笔為你收集整理的java流与文件——ZIP文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux用户权限查看命令(linux
- 下一篇: java流与文件——java生成解压缩文