aardio 文档

zlib.unzip 库模块帮助文档

zlib 成员列表 #

zlib.unzip() #

返回对象:unzipObject

zlib.unzip(zip路径,解压目录) #

创建解压对象。
参数 @2 可选指定解压目录,仅用于计算各条目的 extractPath,省略则默认为 zip 文件同目录下的同名目录。
构造函数不会创建任何目录,写文件前请自行调用 fsys.createParentDir(extractPath)。
参数 @2 指定为 false 则为纯内存读取:extractPath 为 null,不做解压路径安全检查,适合遍历、随机读取 ZIP 条目。
失败返回 null,错误信息(例如路径错误、不是有效的 ZIP 文件)。

zlib.unzip 成员列表 #

zlib.unzip.extract(zip文件路径,解压目录,筛选函数,解压密码) #

zlib.unzip.extract( "/my.zip","/my",  
    function(fileName,extractPath,fileInfo,size){  
        if(extractPath){   
            return true/*是否解压该文件*/;  
        }  
    }, ,  
    function(numEntries){  

    }  
)

unzFileInfoObject 成员列表 #

unzFileInfoObject.compressed_size #

压缩大小

unzFileInfoObject.compressed_size_high #

压缩大小,高位

unzFileInfoObject.compression_method #

压缩方法,0 表示存储,8 表示 Deflate

unzFileInfoObject.crc #

原始文件CRC32校验值(允许负整数)

unzFileInfoObject.disk_num_start #

起始分卷编号,非 0 表示分卷 ZIP

unzFileInfoObject.dosDate #

DOS时间格式

unzFileInfoObject.external_fa #

外部文件属性

unzFileInfoObject.flag #

选项,第 0 位为 1 表示加密,第 11 位为 1 表示条目名使用 UTF-8 编码

unzFileInfoObject.size_filename #

条目名字节长度

unzFileInfoObject.uncompressed_size #

原始大小

unzFileInfoObject.uncompressed_size_high #

原始大小,高位

unzipObject 成员列表 #

unzipObject.close() #

关闭 ZIP 文件,可重复调用。

unzipObject.codepage #

指定zip文件名使用的代码页,数值。
默认为 0 (系统默认代码页),条目名的 EFS 标志为 UTF-8 时忽略此设置。
指定为 65001 则条目名始终按原始字节返回,不做任何转换。

unzipObject.eachFile( ) #

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();
}

unzipObject.eachFile() #

返回对象:unzFileInfoObject

unzipObject.eachReadCurrentFile(解压密码,缓冲区大小) #

for(buffer,readSize in unzipObject.eachReadCurrentFile() ){
    file.writeBuffer(buffer,readSize); 
}

unzipObject.getCurrentFileInfo() #

返回当前条目的 dirName,fileName,extractPath,fileInfo 。
目录条目 fileName 为 null,文件条目 dirName 为 null;构造参数 @2 为 false 时 extractPath 为 null。
指定解压目录时会拒绝越出该目录的条目名(Zip Slip),失败返回 null,错误信息。

unzipObject.getPos() #

返回当前条目在中央目录中的位置对象(含 directoryOffset,fileNumber 字段),可传给 setPos 随机定位。
失败返回 null,错误信息。

unzipObject.globalInfo.number_entry #

文件与目录总数

unzipObject.lastError #

最后一次遍历、读取条目失败的错误信息,成功时为 null 。
遍历 eachFile 提前结束后应检查此值以区分正常结束与 ZIP 目录损坏。

unzipObject.locate(条目名,大小写敏感) #

按条目名跳转到指定条目,条目名以 ZIP 中存储的原始字节比较。
参数 @2 为 0 使用系统默认(Windows 忽略大小写),1 区分大小写,2 忽略大小写。
成功返回 true,找不到返回 null,错误信息。

unzipObject.readCurrentFile(解压密码,最大原始大小) #

将当前条目完整解压并读入内存,返回二进制字符串(空文件返回空字符串)。
会校验实际解压长度与中央目录声明是否一致,并校验 CRC。
参数 @2 可选限制允许读取的原始大小(字节),超出直接失败不解压。
失败返回 null,错误信息,同时记录到 lastError 。

unzipObject.setPos(位置对象) #

直接跳转到 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

Markdown 格式