压缩类 Zip
2024-07-18 17:32:04
类 Zip
Zip 类允许访问 zip 文件和 blob 的内容。
Zip Archive 可以挂载在特定的 URL 上:
const rs = await fetch("remote url");
const archive = Zip.openData(rs.arrayBuffer());
archive.mountTo("this://mounts/test/");
之后,可以像任何其他资源一样访问存档中的数据:
<img src="this://mounts/test/images/foo.png">
import {Bar} from "this://mounts/test/bar.js";
等等。
静态方法
openFile()
Zip.openFile(path:string [,password]): Zip
打开 zip 文件进行读取。返回 Zip 类的实例。
openData()
Zip.openData(data:ArrayBuffer[,password]): Zip
打开 zip blob 进行读取。返回 Zip 类的实例。
toData()
Zip.toData(provider[,password]): ArrayBuffer
从提供程序函数提供的项创建压缩的 Blob。提供程序具有以下签名:
function(n) : [localPath:string, itemData: ArrayBuffer [,fileAttributes:int] | null
toFile()
Zip.toFile(path:string, provider[,password]): true|false
从提供程序函数提供的项创建 zip 文件。提供程序具有以下签名:
function(n) : [localPath:string, itemData: ArrayBuffer [,fileAttributes:int] | null
性能:
长度
zip.length
- 报告 zip 中的项目总数;
方法:
zip.item()
zip.item(index:int | path:string) ZipItem
获取 zip 项目:
按必须在 [0 .. zip.length] 范围内的索引。
或按其路径(Zip 本地)。
(迭代器)
Zip 支持迭代器遍历 zip 的内容:
const zip = Zip.openFile(...);
for(const item of zip)
console.log(item.path);
类 ZipItem
ZipItem 是表示 zip 内单个条目的结构。
性能:
item.isDir:bool
- 如果项目表示 zip 中的目录,则为 true;item.isFile:bool
- 如果项目表示文件,则为 true;item.path:string
- zip内项目的本地路径;item.data:ArrayBuffer
- 项的数据作为 ArrayBuffer。如果需要,用于srt.decode(arrayBuffer,"utf-8")
将数据转换为字符串。item.attributes:int
- zip::external_fa - 文件属性,请参阅此问题的答案。