物件ZipFile
ZipFile 物件是zip格式檔案壓縮解壓縮模組中的重要對象,提供了對zip文件的讀寫訪問
ZipFile 物件繼承自Stream對象,因此可以透過Stream物件一樣的方式進行操作。
常用的靜態函數有:
- zip.open:打開一個zip文件或stream
- zip.isZipFile:判斷文件是否為zip文件
- fs.setZipFS:設定zip文件虛擬檔案系統
- fs.clearZipFS:清除zip文件虛擬檔案系統
ZipFile 物件常用的實例函數及方法有:
- NArrayZipFile.namelist():取得檔案名稱列表
- NObjectZipFile.getinfo(String member):取得文件信息
- Buffer ZipFile.read(String member, String password = ""):讀取指定文件
- NArrayZipFile.readAll(String password = ""):讀取所有文件
- voidZipFile.extract(String member, Stringpath, String password = ""):解壓縮檔案到指定路徑中
- voidZipFile.extract(String member,SeekableStreamstrm, String password = ""):解壓縮檔案到流中
- voidZipFile.extractAll(Stringpath, String password = ""):解壓縮所有檔案到指定路徑
- voidZipFile.write(String filename, String inZipName, String password = ""):寫入指定檔案到壓縮文件
- voidZipFile.write(Bufferdata, String inZipName, String password = ""):寫入指定檔到壓縮文件
- voidZipFile.write(SeekableStreamstrm, String inZipName, String password = ""):寫入指定檔到壓縮文件
- voidZipFile.close():關閉開啟的zip文件
程式碼實例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15var zip = require('zip');
var path = require('path');
var fs = require('fs');
var zipfile = zip.open(path.join(__dirname, 'unzip_test.zip'), 'w');
// write a file
var buf = new Buffer('test data');
zipfile.write(buf, 'test.txt');
// read a file
buf = zipfile.read("unzip_test.js");
console.log(buf);
zipfile.close();
繼承關係
成員函數
namelist
取得檔案名稱列表
1NArray ZipFile.namelist() async;
回傳結果:
- NArray, 傳回包含檔案名稱的列表對象
infolist
取得文件資訊列表
1NArray ZipFile.infolist() async;
回傳結果:
- NArray, 傳回包含文件資訊的列表對象
文件資訊包含欄位有:filename, date, compress_type, compress_size, file_size, password, data
getinfo
取得文件訊息
1NObject ZipFile.getinfo(String member) async;
呼叫參數:
- member: String, 指定要取得資訊的檔名
回傳結果:
- NObject, 回傳文件資訊對象
文件資訊包含欄位有:filename, date, compress_type, compress_size, file_size, password, data
read
傳回從壓縮檔案讀取的數據
1
2Buffer ZipFile.read(String member,
String password = "") async;
呼叫參數:
- member: String, 指定要讀取的檔名
- password: String, 解壓縮密碼, 預設沒有密碼
回傳結果:
- Buffer, 返回文件的所有數據
readAll
解壓縮所有文件
1NArray ZipFile.readAll(String password = "") async;
呼叫參數:
- password: String, 解壓縮密碼, 預設沒有密碼
回傳結果:
- NArray, 包含所有文件資料及資訊的列表
extract
解壓縮指定文件
1
2
3ZipFile.extract(String member,
String path,
String password = "") async;
呼叫參數:
- member: String, 指定要解壓縮的檔名
- path: String, 指定要解壓縮到的路徑
- password: String, 解壓縮密碼, 預設沒有密碼
解壓縮指定檔案到流
1
2
3ZipFile.extract(String member,
SeekableStream strm,
String password = "") async;
呼叫參數:
- member: String, 指定要解壓縮的檔名
- strm:SeekableStream, 指定要解壓縮到的流
- password: String, 解壓縮密碼, 預設沒有密碼
extractAll
解壓縮所有檔案到指定路徑
1
2ZipFile.extractAll(String path,
String password = "") async;
呼叫參數:
- path: String, 指定要解壓縮到的路徑
- password: String, 解壓縮密碼, 預設沒有密碼
write
寫入指定文件到壓縮文件
1
2
3ZipFile.write(String filename,
String inZipName,
String password = "") async;
呼叫參數:
- filename: String, 指定要寫入的文件
- inZipName: String, 壓縮在zip文件內的檔名
- password: String, 解壓縮密碼, 預設沒有密碼
寫入指定文件到壓縮文件
1
2
3ZipFile.write(Buffer data,
String inZipName,
String password = "") async;
呼叫參數:
寫入指定文件到壓縮文件
1
2
3ZipFile.write(SeekableStream strm,
String inZipName,
String password = "") async;
呼叫參數:
- strm:SeekableStream, 指定要寫入檔案資料流
- inZipName: String, 壓縮在zip文件內的檔名
- password: String, 解壓縮密碼, 預設沒有密碼
close
關閉打開的zip文件
1ZipFile.close() async;
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String ZipFile.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value ZipFile.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值