文档手册

压缩类 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 - 文件属性,请参阅此问题的答案。