ZipArchive.CreateAsync 方法

定义

以异步方式在指定模式下初始化和返回给定流的新实例 ZipArchive ,指定是否让流保持打开状态,以及可选的编码和可选的取消标记。

public static System.Threading.Tasks.Task<System.IO.Compression.ZipArchive> CreateAsync(System.IO.Stream stream, System.IO.Compression.ZipArchiveMode mode, bool leaveOpen, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default);
static member CreateAsync : System.IO.Stream * System.IO.Compression.ZipArchiveMode * bool * System.Text.Encoding * System.Threading.CancellationToken -> System.Threading.Tasks.Task<System.IO.Compression.ZipArchive>
Public Shared Function CreateAsync (stream As Stream, mode As ZipArchiveMode, leaveOpen As Boolean, entryNameEncoding As Encoding, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ZipArchive)

参数

stream
Stream

输入或输出流。

mode
ZipArchiveMode

枚举值之一,指定流是否支持读取、写入和查找。

leaveOpen
Boolean

如果释放 ZipArchive,则为使流保持打开状态,否则

entryNameEncoding
Encoding

在此 ZipArchive 中读取或写入条目名称和注释时要使用的编码。

cancellationToken
CancellationToken

要监视的可选取消令牌。

返回

例外

流已关闭。

-或-

mode 与流的功能不兼容。

流为 null.

mode 指定了无效值。

无法将流的内容解释为 ZIP 文件。

-或-

mode 是更新,并且存档中缺少条目或已损坏且无法读取。

-或-

mode 是更新,条目太大,无法容纳到内存中。

为 UTF-8 以外的 Unicode 编码指定了 entryNameEncoding

注解

建议不要为 entryNameEncoding 其他 null 值指定值。 但是,这可能需要与无法正确支持条目名称的 UTF-8 编码的 ZIP 存档工具和库的互操作性。

此值按如下方式使用:

  • 读取 (打开) ZIP 存档文件:
    • 如果未 entryNameEncoding 指定(== null):
      • 对于 设置本地文件标头的常规用途位标志(EFS)中的语言编码标志(EFS)的条目,请使用当前的系统默认代码页(Encoding.Default)解码条目名称和注释。
      • 对于 设置本地 文件标头的常规用途位标志中的语言编码标志(EFS)的条目,请使用 UTF-8 (Encoding.UTF8) 解码条目名称和注释。
    • 如果 entryNameEncoding 指定了 (!= null):
      • 对于 设置本地文件标头的常规用途位标志(EFS)中的语言编码标志(EFS)的条目,请使用指定 entryNameEncoding 项名称和注释解码。
      • 对于 设置本地 文件标头的常规用途位标志中的语言编码标志(EFS)的条目,请使用 UTF-8 (Encoding.UTF8) 解码条目名称和注释。
  • 写入 (保存) ZIP 存档文件:
    • 如果未 entryNameEncoding 指定(== null):
      • 对于包含 ASCII 范围之外的字符的条目名称和注释,语言编码标志(EFS)将在本地文件头的常规用途位标志中设置,UTF-8 (Encoding.UTF8) 用于将条目名称和注释编码为字节。
      • 对于不包含 ASCII 范围之外的字符的条目名称和注释,不会在本地文件头的常规用途位标志中设置语言编码标志(EFS),并且当前系统默认代码页(Encoding.Default)用于将条目名称和注释编码为字节。
    • 如果 entryNameEncoding 指定了 (!= null):
      • entryNameEncoding指定的项名称和注释始终用于将条目名称和注释编码为字节。
      • 仅当指定的 entryNameEncoding 是 UTF-8 编码时,才会设置本地文件标头的常规用途位标志中的语言编码标志 (EFS)。
  • 适用于