ZIP壓縮輸入/輸出流

ZIP
如果要從ZIP壓縮管理文件內讀取某個文件,要先找到對應文件的 目錄進入點(知道ZIP文件內的位置),才能讀取這個文件的內容。

壓縮文件

利用ZipOutputStream類對象可以將文件壓縮爲 .zip文件

構造方法

ZipOutputStream(OutputStream out);

常用方法

putNextEntry(ZipEntry e)	開始寫一個新的ZipEntry,並將流內的位置移至此entry所指數據的開頭
write(bytr[] b,int offset,int len)	將字節數組寫入當前ZIP條數據
finish()	完成寫入ZIP輸出流的內容,無須關閉它所配合的OutputStream
setComment(String comment)	可設置此ZIP文件的註釋文字

解壓ZIP文件
ZipInputStream類可讀取Zip壓縮格式的文件
構造方法

ZipInputStream(InputStream in);

常用方法

read(byte[] b,int offset,int len)	讀取目標b數組內offset偏移量的位置,長度是len字節
available()	判斷是否已讀完目前entry所指定的數據。已讀完返回0,否則返回1
closeEntry()	關閉當前zip條目並定位流以讀取下一個條目
skip(long n)	跳過當前zip條目中指定的字節數
getNextEntry()	讀取下一個ZipEntry,並將流內的位置移至該entry所指數據的開頭
createZipEntry(String name)	以指定的name參數新建一個ZipEntry對象

舉(壞)栗子

import java.io.File;//這一大堆的都很重要,書上都省略了
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class Decompressing {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream("軟件學院.zip"));
			ZipEntry entry = zipInputStream.getNextEntry();
			while (((entry = zipInputStream.getNextEntry()) != null) && !entry.isDirectory()) {
				File file = new File("C:\\Users\\Zhang"+entry.getName());
				System.out.println(file);
				if (!file.exists()) {
					file.mkdirs();
					file.createNewFile();
				}
				zipInputStream.closeEntry();
				System.out.println(entry.getName() + "解壓成功!");
			}
			zipInputStream.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

失敗告終
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章