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 定义的一个或多个无效字符。

archiveFileNamenull

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

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

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

archiveFileName 指定了目录。

-或-

调用方没有所需的权限。

mode 指定了无效值。

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

archiveFileName 格式无效。

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

-或-

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

-或-

modeUpdate ,条目太大,无法容纳到内存中。

异步作被取消。

注解

对于 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 定义的一个或多个无效字符。

archiveFileNamenull

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

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

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

archiveFileName 指定了目录。

-或-

调用方没有所需的权限。

mode 指定了无效值。

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

archiveFileName 格式无效。

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

-或-

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

-或-

modeUpdate ,条目太大,无法容纳到内存中。

异步作被取消。

注解

对于 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

    适用于