ZipArchive.CreateAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
以异步方式在指定模式下初始化和返回给定流的新实例 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
- entryNameEncoding
- Encoding
在此 ZipArchive 中读取或写入条目名称和注释时要使用的编码。
- cancellationToken
- CancellationToken
要监视的可选取消令牌。
返回
例外
流为 null.
mode 指定了无效值。
无法将流的内容解释为 ZIP 文件。
-或-
mode 是更新,并且存档中缺少条目或已损坏且无法读取。
-或-
mode 是更新,条目太大,无法容纳到内存中。
为 UTF-8 以外的 Unicode 编码指定了 entryNameEncoding。
注解
建议不要为 entryNameEncoding 其他 null 值指定值。 但是,这可能需要与无法正确支持条目名称的 UTF-8 编码的 ZIP 存档工具和库的互操作性。
此值按如下方式使用:
- 如果未
entryNameEncoding指定(== null):- 对于 未 设置本地文件标头的常规用途位标志(EFS)中的语言编码标志(EFS)的条目,请使用当前的系统默认代码页(
Encoding.Default)解码条目名称和注释。 - 对于 设置本地 文件标头的常规用途位标志中的语言编码标志(EFS)的条目,请使用 UTF-8 (
Encoding.UTF8) 解码条目名称和注释。
- 对于 未 设置本地文件标头的常规用途位标志(EFS)中的语言编码标志(EFS)的条目,请使用当前的系统默认代码页(
- 如果
entryNameEncoding指定了 (!= null):- 对于 未 设置本地文件标头的常规用途位标志(EFS)中的语言编码标志(EFS)的条目,请使用指定
entryNameEncoding项名称和注释解码。 - 对于 设置本地 文件标头的常规用途位标志中的语言编码标志(EFS)的条目,请使用 UTF-8 (
Encoding.UTF8) 解码条目名称和注释。
- 对于 未 设置本地文件标头的常规用途位标志(EFS)中的语言编码标志(EFS)的条目,请使用指定
- 如果未
entryNameEncoding指定(== null):- 对于包含 ASCII 范围之外的字符的条目名称和注释,语言编码标志(EFS)将在本地文件头的常规用途位标志中设置,UTF-8 (
Encoding.UTF8) 用于将条目名称和注释编码为字节。 - 对于不包含 ASCII 范围之外的字符的条目名称和注释,不会在本地文件头的常规用途位标志中设置语言编码标志(EFS),并且当前系统默认代码页(
Encoding.Default)用于将条目名称和注释编码为字节。
- 对于包含 ASCII 范围之外的字符的条目名称和注释,语言编码标志(EFS)将在本地文件头的常规用途位标志中设置,UTF-8 (
- 如果
entryNameEncoding指定了 (!= null):-
entryNameEncoding指定的项名称和注释始终用于将条目名称和注释编码为字节。 - 仅当指定的
entryNameEncoding是 UTF-8 编码时,才会设置本地文件标头的常规用途位标志中的语言编码标志 (EFS)。
-