FileSystemManager.readZipEntry
基础库 2.90.0 开始支持本方法,低版本需做兼容处理,这是一个异步方法。
读取压缩包内的文件。
语法
tt.readZipEntry(options);
参数说明
options 为 object 类型,属性如下:
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低支持版本 |
---|---|---|---|---|---|
filePath | string | 是 | 要读取的压缩包的路径 (本地路径) | 2.90.0 | |
encoding | string | 否 | 统一指定读取文件的字符编码,只在 entries 值为"all"时有效。如果 entries 值为"all"且不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容 | 2.90.0 | |
entries | Array | 是 | 要读取的压缩包内的文件列表(当传入"all" 时表示读取压缩包内所有文件) | 2.90.0 | |
success | function | 否 | 接口调用成功的回调函数 | 2.90.0 | |
fail | function | 否 | 接口调用失败的回调函数 | 2.90.0 | |
complete | function | 否 | 接口调用结束的回调函数 | 2.90.0 |
encoding 的合法值
值 | 说明 | 最低支持版本 |
---|---|---|
ascii | 2.90.0 | |
base64 | 2.90.0 | |
binary | 2.90.0 | |
hex | 2.90.0 | |
ucs2/ucs-2/utf16le/utf-16le | 以小端序读取 | 2.90.0 |
utf-8/utf8 | 2.90.0 | |
latin1 | 2.90.0 |
entries 类型说明
Array<object> | 'all' 类型,object 属性如下:
属性名 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
path | string | 是 | 压缩包内文件路径,entries中对象之间的path不可重复 | |
encoding | string | 否 | 指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容 |
回调成功
object 类型,属性如下:
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
errMsg | string | "readZipEntry:ok" | 2.90.0 |
entries | object | 文件读取结果。entries 是一个对象,key是文件路径,value是一个对象 FileItem ,表示该文件的读取结果。每个 FileItem 包含 data (文件内容) 和 errMsg (错误信息) 属性。 | 2.90.0 |
entries 类型说明
object 类型,属性如下:
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
path |
| 文件路径 | 2.90.0 |
回调失败
object 类型,属性如下:
错误说明
errNo | errMsg | 说明 | 最低支持版本 |
---|---|---|---|
20001 | readZipEntry:fail param should be xxx, but got xxx | 参数校验错误 | 2.90.0 |
21101 | readZipEntry:fail permission denied, unzip {path_value} | 源文件路径不可读 | 2.90.0 |
21102 | readZipEntry:fail operation not permitted, readZipEntry {filePath_value} | 类型不正确(不是文件路径) | 2.90.0 |
21103 | readZipEntry:fail no such file or directory, readZipEntry {filePath_value} | 文件不存在,或者目标文件路径的上层目录不存在 | 2.90.0 |
21106 | readZipEntry:fail unzip open file fail | 压缩文件打开失败 | 2.90.0 |
21107 | readZipEntry:fail unzip entry fail | 解压单个文件失败 | 2.90.0 |
代码示例
const fs = tt.getFileSystemManager(); // 读取压缩包内所有文件 fs.readZipEntry({ filePath: "zipPath", entries: "all", encoding: "utf8", success(res) { console.log("读取压缩包内所有文件成功", res); }, fail(res) { console.log("读取压缩包内所有文件失败", res); }, }); // 读取压缩包内指定文件 fs.readZipEntry({ filePath: "zipPath", entries: [ { path: "zipEntryPath1", }, { path: "zipEntryPath2", encoding: "utf8", }, ], success(res) { console.log("读取指定压缩文件成功", res); }, fail(res) { console.log("读取指定压缩文件失败", res); }, });
Bug & Tip
无