创建解压对象。
参数 @2 可选指定解压目录,仅用于计算各条目的 extractPath,省略则默认为 zip 文件同目录下的同名目录。
构造函数不会创建任何目录,写文件前请自行调用 fsys.createParentDir(extractPath)。
参数 @2 指定为 false 则为纯内存读取:extractPath 为 null,不做解压路径安全检查,适合遍历、随机读取 ZIP 条目。
失败返回 null,错误信息(例如路径错误、不是有效的 ZIP 文件)。
zlib.unzip.extract( "/my.zip","/my",
function(fileName,extractPath,fileInfo,size){
if(extractPath){
return true/*是否解压该文件*/;
}
}, ,
function(numEntries){
}
)
压缩大小
压缩大小,高位
压缩方法,0 表示存储,8 表示 Deflate
原始文件CRC32校验值(允许负整数)
起始分卷编号,非 0 表示分卷 ZIP
DOS时间格式
外部文件属性
选项,第 0 位为 1 表示加密,第 11 位为 1 表示条目名使用 UTF-8 编码
条目名字节长度
原始大小
原始大小,高位
关闭 ZIP 文件,可重复调用。
指定zip文件名使用的代码页,数值。
默认为 0 (系统默认代码页),条目名的 EFS 标志为 UTF-8 时忽略此设置。
指定为 65001 则条目名始终按原始字节返回,不做任何转换。
for(pos,dirName,fileName,extractPath,fileInfo in unzipObject.eachFile() ){
if( dirName ) continue;
..fsys.createParentDir(extractPath)
var file = io.file( extractPath,"w+b" )
for(buffer,readSize in unzipObject.eachReadCurrentFile() ){
file.writeBuffer(buffer,readSize);
}
file.close();
}
for(buffer,readSize in unzipObject.eachReadCurrentFile() ){
file.writeBuffer(buffer,readSize);
}
返回当前条目的 dirName,fileName,extractPath,fileInfo 。
目录条目 fileName 为 null,文件条目 dirName 为 null;构造参数 @2 为 false 时 extractPath 为 null。
指定解压目录时会拒绝越出该目录的条目名(Zip Slip),失败返回 null,错误信息。
返回当前条目在中央目录中的位置对象(含 directoryOffset,fileNumber 字段),可传给 setPos 随机定位。
失败返回 null,错误信息。
文件与目录总数
最后一次遍历、读取条目失败的错误信息,成功时为 null 。
遍历 eachFile 提前结束后应检查此值以区分正常结束与 ZIP 目录损坏。
按条目名跳转到指定条目,条目名以 ZIP 中存储的原始字节比较。
参数 @2 为 0 使用系统默认(Windows 忽略大小写),1 区分大小写,2 忽略大小写。
成功返回 true,找不到返回 null,错误信息。
将当前条目完整解压并读入内存,返回二进制字符串(空文件返回空字符串)。
会校验实际解压长度与中央目录声明是否一致,并校验 CRC。
参数 @2 可选限制允许读取的原始大小(字节),超出直接失败不解压。
失败返回 null,错误信息,同时记录到 lastError 。
直接跳转到 getPos 返回的条目位置,跳转后可调用 readCurrentFile、eachReadCurrentFile 或 getCurrentFileInfo 。
成功返回 true,失败返回 null,错误信息。
_UNZ_BADZIPFILE=-103
_UNZ_CRCERROR=-105
_UNZ_END_OF_LIST_OF_FILE=-100
_UNZ_EOF=0
_UNZ_ERRNO=-1
_UNZ_INTERNALERROR=-104
_UNZ_OK=0
_UNZ_PARAMERROR=-102