语言

ZipFile.OpenAsync 方法

定义

重载

名称 说明
OpenAsync(String, ZipArchiveMode, CancellationToken)

异步打开ZipArchive指定模式下的指定archiveFileNameZipArchiveMode项。

OpenAsync(String, ZipArchiveMode, Encoding, CancellationToken)

异步打开ZipArchive指定模式下的指定archiveFileNameZipArchiveMode项。

OpenAsync(String, ZipArchiveMode, CancellationToken)

Source:
ZipFile.Create.Async.cs
Source:
ZipFile.Create.Async.cs

异步打开ZipArchive指定模式下的指定archiveFileNameZipArchiveMode项。

public static System.Threading.Tasks.Task<System.IO.Compression.ZipArchive> OpenAsync(string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Threading.CancellationToken cancellationToken = default);
static member OpenAsync : string * System.IO.Compression.ZipArchiveMode * System.Threading.CancellationToken -> System.Threading.Tasks.Task<System.IO.Compression.ZipArchive>
Public Shared Function OpenAsync (archiveFileName As String, mode As ZipArchiveMode, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ZipArchive)

参数

archiveFileName
String

要打开存档的文件系统上的路径。

mode
ZipArchiveMode

枚举值之一,指定在打开的存档中的条目上允许的操作。

cancellationToken
CancellationToken

用于监视取消请求的取消令牌。

返回

例外

archiveFileName 是长度为零的字符串,仅包含空格,或包含 InvalidPathChars 定义的一个或多个无效字符。

archiveFileName 是 null。

archiveFileName 超出系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。

指定的 archiveFileName 值无效(例如,它位于未映射的驱动器上)。

打开文件时出现未指定的 I/O 错误。

archiveFileName 指定了目录。

-或-

调用方没有所需的权限。

mode 指定了无效值。

找不到在其中 archiveFileName 指定的文件。

archiveFileName 格式无效。

无法将指定的文件解释为 zip 文件。

-或-

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

-或-

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

异步作被取消。

注解

对于 archiveFileName:

允许该路径指定相对路径或绝对路径信息。 相对路径信息解释为相对于当前工作目录。

对于 mode:

如果 Read 指定了文件,则打开 System.IO.FileMode.Open该文件,如果该文件不存在,则会引发该文件 FileNotFoundException 。

如果 Create 已指定,则打开 System.IO.FileMode.CreateNew该文件,如果文件已存在,则会引发该文件 System.IO.IOException 。

如果 Update 指定,则使用 System.IO.FileMode.OpenOrCreate..

如果该文件存在并且是 zip 文件,则其条目将可访问并可以修改,并且可以创建新条目。

如果文件存在且不是 zip 文件,则会引发一个 InvalidDataException 。

如果文件存在且为空或不存在,则将创建一个新的 zip 文件。

创建新 zip 文件时, Create 使用模式创建 zip 文件会更高效。

适用于

OpenAsync(String, ZipArchiveMode, Encoding, CancellationToken)

Source:
ZipFile.Create.Async.cs
Source:
ZipFile.Create.Async.cs

异步打开ZipArchive指定模式下的指定archiveFileNameZipArchiveMode项。

public static System.Threading.Tasks.Task<System.IO.Compression.ZipArchive> OpenAsync(string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default);
static member OpenAsync : string * System.IO.Compression.ZipArchiveMode * System.Text.Encoding * System.Threading.CancellationToken -> System.Threading.Tasks.Task<System.IO.Compression.ZipArchive>
Public Shared Function OpenAsync (archiveFileName As String, mode As ZipArchiveMode, entryNameEncoding As Encoding, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ZipArchive)

参数

archiveFileName
String

要打开存档的文件系统上的路径。

mode
ZipArchiveMode

枚举值之一,指定在打开的存档中的条目上允许的操作。

entryNameEncoding
Encoding

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

cancellationToken
CancellationToken

用于监视取消请求的取消令牌。

返回

例外

archiveFileName 是长度为零的字符串,仅包含空格,或包含 InvalidPathChars 定义的一个或多个无效字符。

archiveFileName 是 null。

archiveFileName 超出系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。

archiveFileName 无效(例如,它位于未映射的驱动器上)。

打开文件时出现未指定的 I/O 错误。

archiveFileName 指定了目录。

-或-

调用方没有所需的权限。

mode 指定了无效值。

找不到在其中 archiveFileName 指定的文件。

archiveFileName 格式无效。

无法将指定的文件解释为 zip 文件。

-或-

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

-或-

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

异步作被取消。

注解

对于 archiveFileName:

允许该路径指定相对路径或绝对路径信息。 相对路径信息解释为相对于当前工作目录。

对于 mode:

如果 Read 指定了文件,则打开 System.IO.FileMode.Open该文件,如果该文件不存在,则会引发该文件 FileNotFoundException 。

如果 Create 已指定,则打开 System.IO.FileMode.CreateNew该文件,如果文件已存在,则会引发该文件 System.IO.IOException 。

如果 Update 指定,则使用 System.IO.FileMode.OpenOrCreate..

如果该文件存在并且是 zip 文件,则其条目将可访问并可以修改,并且可以创建新条目。

如果文件存在且不是 zip 文件,则会引发一个 InvalidDataException 。

如果文件存在且为空或不存在,则将创建一个新的 zip 文件。

创建新 zip 文件时, Create 使用模式创建 zip 文件会更高效。

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

此值按如下方式使用:

  • 读取 (打开) 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)。
  • UTF-8 以外的 Unicode 编码不能用于该 entryNameEncoding编码,否则会引发一个 ArgumentException 。

    适用于