对象 ZipFile
ZipFile 对象是 zip 格式文件压缩解压模块中的重要对象,提供了对 zip 文件的读写访问
ZipFile 对象继承自Stream 对象,因此可以通过 Stream 对象一样的方式进行操作。
常用的静态函数有:
- zip.open:打开一个 zip 文件或 stream
- zip.isZipFile:判断文件是否是 zip 文件
- fs.setZipFS:设置 zip 文件虚拟文件系统
- fs.clearZipFS:清除 zip 文件虚拟文件系统
ZipFile 对象的常用实例函数及方法有:
- NArray ZipFile.namelist():获取文件名列表
- NObject ZipFile.getinfo(String member):获取文件信息
- Buffer ZipFile.read(String member, String password = ""):读取指定文件
- NArray ZipFile.readAll(String password = ""):读取所有文件
- void ZipFile.extract(String member, String path, String password = ""):解压文件到指定路径中
- void ZipFile.extract(String member, SeekableStream strm, String password = ""):解压文件到流中
- void ZipFile.extractAll(String path, String password = ""):解压所有文件到指定路径
- void ZipFile.write(String filename, String inZipName, String password = ""):写入指定文件到压缩文件
- void ZipFile.write(Buffer data, String inZipName, String password = ""):写入指定文件到压缩文件
- void ZipFile.write(SeekableStream strm, String inZipName, String password = ""):写入指定文件到压缩文件
- void ZipFile.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 序列化的值