ZipFile.OpenAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| 名称 | 说明 |
|---|---|
| OpenAsync(String, ZipArchiveMode, CancellationToken) |
异步打开 |
| OpenAsync(String, ZipArchiveMode, Encoding, CancellationToken) |
异步打开 |
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 错误。
mode 指定了无效值。
找不到在其中 archiveFileName 指定的文件。
archiveFileName 格式无效。
异步作被取消。
注解
对于 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 错误。
mode 指定了无效值。
找不到在其中 archiveFileName 指定的文件。
archiveFileName 格式无效。
异步作被取消。
注解
对于 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 编码。
此值按如下方式使用:
- 如果未
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)。
-
UTF-8 以外的 Unicode 编码不能用于该 entryNameEncoding编码,否则会引发一个 ArgumentException 。