ZipFile.ExtractToDirectory 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将指定 zip 存档中的所有文件都解压缩到文件系统的一个目录下。
重载
ExtractToDirectory(String, String, Encoding, Boolean) |
将指定存档中的所有文件都解压缩到文件系统的某目录下。 |
ExtractToDirectory(Stream, String, Encoding, Boolean) |
从指定流中存储的 zip 存档中提取所有文件,并将其置于文件系统上的指定目标目录中,对条目名称使用指定的字符编码,并选择性地允许选择是否应覆盖目标目录中的文件。 |
ExtractToDirectory(String, String, Encoding) |
将指定 zip 存档中的所有文件解压缩到文件系统的一目录下,并使用项名称的指定字符编码。 |
ExtractToDirectory(String, String, Boolean) |
将指定存档中的所有文件都解压缩到文件系统的某目录下。 |
ExtractToDirectory(Stream, String, Boolean) |
从指定流中存储的 zip 存档中提取所有文件,并将其放置在文件系统的指定目标目录中,并选择性地允许选择是否应覆盖目标目录中的文件。 |
ExtractToDirectory(String, String) |
将指定 zip 存档中的所有文件都解压缩到文件系统的一个目录下。 |
ExtractToDirectory(Stream, String) |
从指定流中存储的 zip 存档中提取所有文件,并将其放置在文件系统的指定目标目录中。 |
ExtractToDirectory(Stream, String, Encoding) |
从指定流中存储的 zip 存档中提取所有文件,并将其放置在文件系统的指定目标目录中,并使用指定的字符编码作为条目名称。 |
ExtractToDirectory(String, String, Encoding, Boolean)
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
将指定存档中的所有文件都解压缩到文件系统的某目录下。
public:
static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding, bool overwriteFiles);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding, bool overwriteFiles);
static member ExtractToDirectory : string * string * System.Text.Encoding * bool -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding, overwriteFiles As Boolean)
参数
- sourceArchiveFileName
- String
文件系统上指向要解压缩的存档的路径。
- destinationDirectoryName
- String
文件系统上指向目标目录的路径。
- entryNameEncoding
- Encoding
在此 ZipArchive 中读取项名时使用的编码。
- overwriteFiles
- Boolean
要覆盖文件,则为 true
;否则为 false
。
例外
sourceArchiveFileName
或 destinationDirectoryName
是一个长度为零的字符串,仅包含空格,或包含一个或多个由 InvalidPathChars 定义的无效字符。
- 或 -
entryNameEncoding
设置为不同于 UTF-8 的 Unicode 编码。
sourceArchiveFileName
或 destinationDirectoryName
为 null
。
sourceArchiveFileName
或 destinationDirectoryName
指定的路径和/或文件名超出了系统定义的最大长度。
sourceArchiveFileName
或 destinationDirectoryName
指定的路径无效(例如,它位于未映射的驱动器上)。
overwriteFiles
为 false
,并且要提取的存档项与 中 destinationDirectoryName
已存在的文件同名。
- 或 -
发生了 I/O 错误。
- 或 -
ZipArchiveEntry 的名称的长度为零,仅包含空格,或包含一个或多个由 InvalidPathChars 定义的无效字符。
- 或 -
提取 ZipArchiveEntry 将导致文件目标位于目标目录之外(例如,由于父目录访问器)。
- 或 -
ZipArchiveEntry 与一个已从同一存档中解压缩的项同名。
调用方没有所要求的权限。
sourceArchiveFileName
或 destinationDirectoryName
的格式无效。
未找到 sourceArchiveFileName
。
注解
如果在提取存档时出错,存档将保持部分提取状态。
将提取每个条目,以便提取的文件具有与存档项相同的相对路径 destinationDirectoryName
。
sourceArchiveFileName
和 destinationDirectoryName
参数接受相对路径和绝对路径。 相对路径被解释为相对于当前工作目录。
如果要存档的文件的上次修改时间无效,则将使用 1980 年 1 月 1 日午夜 (zip 时间戳格式表示的第一个日期和时间,) 。
适用于
ExtractToDirectory(Stream, String, Encoding, Boolean)
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
从指定流中存储的 zip 存档中提取所有文件,并将其置于文件系统上的指定目标目录中,对条目名称使用指定的字符编码,并选择性地允许选择是否应覆盖目标目录中的文件。
public:
static void ExtractToDirectory(System::IO::Stream ^ source, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding, bool overwriteFiles);
public static void ExtractToDirectory (System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles);
static member ExtractToDirectory : System.IO.Stream * string * System.Text.Encoding * bool -> unit
Public Shared Sub ExtractToDirectory (source As Stream, destinationDirectoryName As String, entryNameEncoding As Encoding, overwriteFiles As Boolean)
参数
- source
- Stream
要从中提取 zip 存档的流。
- destinationDirectoryName
- String
到放置解压缩文件的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。
- entryNameEncoding
- Encoding
在存档中读取或写入项名时使用的编码。 仅当需要针对具有不支持条目名称的 UTF-8 编码的 zip 归档工具和库的互操作性进行编码时,为此参数指定值。
- overwriteFiles
- Boolean
要覆盖文件,则为 true
;否则为 false
。
例外
destinationDirectoryName
> 为 Empty,仅包含空格,或至少包含一个无效字符。
- 或 -
entryNameEncoding
设置为不同于 UTF-8 的 Unicode 编码。
destinationDirectoryName
或 source
为 null
。
中的 destinationDirectoryName
指定路径超出了系统定义的最大长度。
指定的路径无效(例如,它位于未映射的驱动器上)。
一个在存档中的输入名称是 Empty,仅包含空白或包含至少一个无效字符。
- 或 -
提取存档条目将生成在 destinationDirectoryName
指定的目录之外的一个文件。 (例如,如果该输入名称包括父目录访问器,则这可能发生。)
- 或 -
overwriteFiles
为 false
,并且要提取的存档项与已提取或存在于 中的 destinationDirectoryName
条目同名。
调用方不具有访问存档或目标目录的所需权限。
destinationDirectoryName
包含无效格式。
注解
此方法创建指定的目录和所有子目录。 目标目录不能已存在。 在提取之前,会引发与验证 参数中包含的 source
或 zip 存档中的文件的路径destinationDirectoryName
相关的异常。 否则,如果在提取过程中发生错误,存档将保持部分提取状态。 每个提取的文件都具有指定的 destinationDirectoryName
目录的相对路径,因为它的源条目与存档的根目录具有相同的路径。 如果要存档的文件的上次修改时间无效,则将使用 1980 年 1 月 1 日午夜 (zip 时间戳格式表示的第一个日期和时间,) 。
适用于
ExtractToDirectory(String, String, Encoding)
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
将指定 zip 存档中的所有文件解压缩到文件系统的一目录下,并使用项名称的指定字符编码。
public:
static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding);
static member ExtractToDirectory : string * string * System.Text.Encoding -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding)
参数
- sourceArchiveFileName
- String
要解压缩存档的路径。
- destinationDirectoryName
- String
到放置解压缩文件的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。
- entryNameEncoding
- Encoding
在存档中读取或写入项名时使用的编码。 仅当需要针对具有不支持条目名称的 UTF-8 编码的 zip 归档工具和库的互操作性进行编码时,为此参数指定值。
例外
destinationDirectoryName
或 sourceArchiveFileName
是 Empty,仅包含空格,或包含至少一个无效字符。
- 或 -
entryNameEncoding
设置为不同于 UTF-8 的 Unicode 编码。
destinationDirectoryName
或 sourceArchiveFileName
为 null
。
destinationDirectoryName
或 sourceArchiveFileName
中的指定路径超过了系统定义的最大长度。
指定的路径无效(例如,它位于未映射的驱动器上)。
一个在存档中的输入名称是 Empty,仅包含空白或包含至少一个无效字符。
- 或 -
提取存档条目将生成在 destinationDirectoryName
指定的目录之外的一个文件。 (例如,如果该输入名称包括父目录访问器,则这可能发生。)
- 或 -
要提取的存档项与已提取或存在于 中的 destinationDirectoryName
条目同名。
调用方不具有访问存档或目标目录的所需权限。
destinationDirectoryName
或 sourceArchiveFileName
包含的格式无效。
未找到 sourceArchiveFileName
。
由 sourceArchiveFileName
指定的存档不是有效 zip 存档。
- 或 -
存档项未找到或已损坏。
- 或 -
使用了一种不支持的压缩方法压缩存档条目。
注解
如有必要,此方法会创建指定的目录和所有子目录。 与验证 或 sourceArchiveFileName
参数中的destinationDirectoryName
路径相关的异常在提取之前引发。 否则,如果在提取过程中发生错误,存档将保持部分提取状态。 每个提取的文件都具有指定的 destinationDirectoryName
目录的相对路径,因为它的源条目对存档的根目录具有相同的路径。
如果 entryNameEncoding
设置为非 null
值,则根据以下规则解码条目名称:
- 对于未在本地文件头) 的常规用途位标志中 (语言编码标志的条目名称,将使用指定的编码对条目名称进行解码。
- 对于设置了语言编码标志的条目,将使用 UTF-8 解码条目名称。
如果 entryNameEncoding
设置为 null
,则根据以下规则对条目名称进行解码:
- 对于未设置本地文件头) 的常规用途位标志中 (语言编码标志的条目,将使用当前系统默认代码页对条目名称进行解码。
- 对于设置了语言编码标志的条目,将使用 UTF-8 解码条目名称。
适用于
ExtractToDirectory(String, String, Boolean)
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
将指定存档中的所有文件都解压缩到文件系统的某目录下。
public:
static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : string * string * bool -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, overwriteFiles As Boolean)
参数
- sourceArchiveFileName
- String
文件系统上指向要解压缩的存档的路径。
- destinationDirectoryName
- String
文件系统上指向目标目录的路径。
- overwriteFiles
- Boolean
要覆盖文件,则为 true
;否则为 false
。
例外
sourceArchiveFileName
或 destinationDirectoryName
是一个长度为零的字符串,仅包含空格,或包含一个或多个由 InvalidPathChars 定义的无效字符。
sourceArchiveFileName
或 destinationDirectoryName
为 null
。
sourceArchiveFileName
或 destinationDirectoryName
指定的路径和/或文件名超出了系统定义的最大长度。
sourceArchiveFileName
或 destinationDirectoryName
指定的路径无效(例如,它位于未映射的驱动器上)。
overwriteFiles
是 false
且 destinationDirectoryName
已包含与要提取的文件同名的文件。
- 或 -
发生了 I/O 错误。
- 或 -
ZipArchiveEntry 的名称的长度为零,仅包含空格,或包含一个或多个由 InvalidPathChars 定义的无效字符。
- 或 -
提取 ZipArchiveEntry 将导致文件目标位于目标目录之外(例如,由于父目录访问器)。
- 或 -
与 ZipArchiveEntry 已提取的同一存档中的条目同名。
调用方没有所要求的权限。
sourceArchiveFileName
或 destinationDirectoryName
的格式无效。
未找到 sourceArchiveFileName
。
由 sourceArchiveFileName
指定的存档不是有效 ZipArchive。
- 或 -
ZipArchiveEntry 未找到或已损坏。
- 或 -
ZipArchiveEntry 已经通过使用一种不被支持的压缩方法压缩。
注解
如果在提取存档时出错,存档将保持部分提取状态。
将提取每个条目,以便提取的文件具有与存档项相同的相对路径 destinationDirectoryName
。
sourceArchiveFileName
和 destinationDirectoryName
参数接受相对路径和绝对路径。 相对路径被解释为相对于当前工作目录。
如果要存档的文件的上次修改时间无效,则将使用 1980 年 1 月 1 日午夜 (zip 时间戳格式表示的第一个日期和时间) 。
适用于
ExtractToDirectory(Stream, String, Boolean)
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
从指定流中存储的 zip 存档中提取所有文件,并将其置于文件系统上的指定目标目录中,并选择性地允许选择是否应覆盖目标目录中的文件。
public:
static void ExtractToDirectory(System::IO::Stream ^ source, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory (System.IO.Stream source, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : System.IO.Stream * string * bool -> unit
Public Shared Sub ExtractToDirectory (source As Stream, destinationDirectoryName As String, overwriteFiles As Boolean)
参数
- source
- Stream
要从中提取 zip 存档的流。
- destinationDirectoryName
- String
到放置解压缩文件的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。
- overwriteFiles
- Boolean
要覆盖文件,则为 true
;否则为 false
。
例外
destinationDirectoryName
> 为 Empty,仅包含空格,或至少包含一个无效字符。
destinationDirectoryName
或 source
为 null
。
中的 destinationDirectoryName
指定路径超出了系统定义的最大长度。
指定的路径无效(例如,它位于未映射的驱动器上)。
一个在存档中的输入名称是 Empty,仅包含空白或包含至少一个无效字符。
- 或 -
提取存档条目将生成在 destinationDirectoryName
指定的目录之外的一个文件。 (例如,如果该输入名称包括父目录访问器,则这可能发生。)
- 或 -
overwriteFiles
为 , false
并且要提取的存档项与已提取或存在于 中的 destinationDirectoryName
条目同名。
调用方不具有访问存档或目标目录的所需权限。
destinationDirectoryName
包含无效格式。
注解
此方法创建指定的目录和所有子目录。 目标目录不能已经存在。 在提取之前,会引发与验证 参数中包含的 source
或 zip 存档中的文件的路径destinationDirectoryName
相关的异常。 否则,如果在提取过程中发生错误,存档将保持部分提取状态。 每个提取的文件都具有指定的 destinationDirectoryName
目录的相对路径,因为它的源条目对存档的根目录具有相同的路径。 如果要存档的文件的上次修改时间无效,则将使用 1980 年 1 月 1 日午夜 (zip 时间戳格式表示的第一个日期和时间) 。
适用于
ExtractToDirectory(String, String)
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
将指定 zip 存档中的所有文件都解压缩到文件系统的一个目录下。
public:
static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName);
static member ExtractToDirectory : string * string -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String)
参数
- sourceArchiveFileName
- String
要解压缩存档的路径。
- destinationDirectoryName
- String
到放置解压缩文件的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。
例外
destinationDirectoryName
或 sourceArchiveFileName
是 Empty,仅包含空格,或包含至少一个无效字符。
destinationDirectoryName
或 sourceArchiveFileName
为 null
。
destinationDirectoryName
或 sourceArchiveFileName
中的指定路径超过了系统定义的最大长度。
指定的路径无效(例如,它位于未映射的驱动器上)。
一个在存档中的输入名称是 Empty,仅包含空白或包含至少一个无效字符。
- 或 -
提取存档条目将生成在 destinationDirectoryName
指定的目录之外的一个文件。 (例如,如果该输入名称包括父目录访问器,则这可能发生。)
- 或 -
要提取的存档项与已提取或存在于 中的 destinationDirectoryName
条目同名。
调用方不具有访问存档或目标目录的所需权限。
destinationDirectoryName
或 sourceArchiveFileName
包含的格式无效。
未找到 sourceArchiveFileName
。
由 sourceArchiveFileName
指定的存档不是有效 zip 存档。
- 或 -
存档项未找到或已损坏。
- 或 -
使用了一种不支持的压缩方法压缩存档条目。
示例
此示例演示如何使用 ZipFile 类创建和提取 zip 存档。 它将文件夹的内容压缩到 zip 存档中,并将该内容提取到新文件夹。 若要使用 ZipFile 类,必须在项目中引用 System.IO.Compression.FileSystem
程序集。
using System;
using System.IO.Compression;
class Program
{
static void Main(string[] args)
{
string startPath = @".\start";
string zipPath = @".\result.zip";
string extractPath = @".\extract";
ZipFile.CreateFromDirectory(startPath, zipPath);
ZipFile.ExtractToDirectory(zipPath, extractPath);
}
}
open System.IO.Compression
let startPath = @".\start"
let zipPath = @".\result.zip"
let extractPath = @".\extract"
ZipFile.CreateFromDirectory(startPath, zipPath)
ZipFile.ExtractToDirectory(zipPath, extractPath)
Imports System.IO.Compression
Module Module1
Sub Main()
Dim startPath As String = ".\start"
Dim zipPath As String = ".\result.zip"
Dim extractPath As String = ".\extract"
ZipFile.CreateFromDirectory(startPath, zipPath)
ZipFile.ExtractToDirectory(zipPath, extractPath)
End Sub
End Module
注解
此方法创建指定的目录和所有子目录。 目标目录不能已存在。 与验证 或 sourceArchiveFileName
参数中的destinationDirectoryName
路径相关的异常在提取之前引发。 否则,如果在提取过程中发生错误,存档将保持部分提取状态。 每个提取的文件都具有指定的 destinationDirectoryName
目录的相对路径,因为它的源条目与存档的根目录具有相同的路径。
适用于
ExtractToDirectory(Stream, String)
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
从指定流中存储的 zip 存档中提取所有文件,并将其放置在文件系统的指定目标目录中。
public:
static void ExtractToDirectory(System::IO::Stream ^ source, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory (System.IO.Stream source, string destinationDirectoryName);
static member ExtractToDirectory : System.IO.Stream * string -> unit
Public Shared Sub ExtractToDirectory (source As Stream, destinationDirectoryName As String)
参数
- source
- Stream
要从中提取 zip 存档的流。
- destinationDirectoryName
- String
到放置解压缩文件的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。
例外
destinationDirectoryName
> 为 Empty,仅包含空格,或至少包含一个无效字符。
destinationDirectoryName
或 source
为 null
。
中的 destinationDirectoryName
指定路径超出了系统定义的最大长度。
指定的路径无效(例如,它位于未映射的驱动器上)。
一个在存档中的输入名称是 Empty,仅包含空白或包含至少一个无效字符。
- 或 -
提取存档条目将生成在 destinationDirectoryName
指定的目录之外的一个文件。 (例如,如果该输入名称包括父目录访问器,则这可能发生。)
- 或 -
要提取的存档项与已提取或存在于 中的 destinationDirectoryName
条目同名。
调用方不具有访问存档或目标目录的所需权限。
destinationDirectoryName
包含无效格式。
注解
此方法创建指定的目录和所有子目录。 目标目录不能已存在。 在提取之前,会引发与验证 参数中包含的 source
或 zip 存档中的文件的路径destinationDirectoryName
相关的异常。 否则,如果在提取过程中发生错误,存档将保持部分提取状态。 每个提取的文件都具有指定的 destinationDirectoryName
目录的相对路径,因为它的源条目与存档的根目录具有相同的路径。 如果要存档的文件的上次修改时间无效,则将使用 1980 年 1 月 1 日午夜 (zip 时间戳格式表示的第一个日期和时间,) 。
适用于
ExtractToDirectory(Stream, String, Encoding)
- Source:
- ZipFile.Extract.cs
- Source:
- ZipFile.Extract.cs
从指定流中存储的 zip 存档中提取所有文件,并将其放置在文件系统的指定目标目录中,并使用指定的字符编码作为条目名称。
public:
static void ExtractToDirectory(System::IO::Stream ^ source, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding);
public static void ExtractToDirectory (System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding);
static member ExtractToDirectory : System.IO.Stream * string * System.Text.Encoding -> unit
Public Shared Sub ExtractToDirectory (source As Stream, destinationDirectoryName As String, entryNameEncoding As Encoding)
参数
- source
- Stream
要从中提取 zip 存档的流。
- destinationDirectoryName
- String
到放置解压缩文件的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。
- entryNameEncoding
- Encoding
在存档中读取或写入项名时使用的编码。 仅当需要针对具有不支持条目名称的 UTF-8 编码的 zip 归档工具和库的互操作性进行编码时,为此参数指定值。
例外
destinationDirectoryName
> 为 Empty,仅包含空格,或至少包含一个无效字符。
- 或 -
entryNameEncoding
设置为不同于 UTF-8 的 Unicode 编码。
destinationDirectoryName
或 source
为 null
。
中的 destinationDirectoryName
指定路径超出了系统定义的最大长度。
指定的路径无效(例如,它位于未映射的驱动器上)。
一个在存档中的输入名称是 Empty,仅包含空白或包含至少一个无效字符。
- 或 -
提取存档条目将生成在 destinationDirectoryName
指定的目录之外的一个文件。 (例如,如果该输入名称包括父目录访问器,则这可能发生。)
- 或 -
要提取的存档项与已提取或存在于 中的 destinationDirectoryName
条目同名。
调用方不具有访问存档或目标目录的所需权限。
destinationDirectoryName
包含无效格式。
注解
此方法创建指定的目录和所有子目录。 目标目录不能已存在。 在提取之前,会引发与验证 参数中包含的 source
或 zip 存档中的文件的路径destinationDirectoryName
相关的异常。 否则,如果在提取过程中发生错误,存档将保持部分提取状态。 每个提取的文件都具有指定的 destinationDirectoryName
目录的相对路径,因为它的源条目与存档的根目录具有相同的路径。 如果要存档的文件的上次修改时间无效,则将使用 1980 年 1 月 1 日午夜 (zip 时间戳格式表示的第一个日期和时间,) 。