ZipFileExtensions.ExtractToDirectory 方法

定义

重载

ExtractToDirectory(ZipArchive, String)

将 zip 存档中的所有文件都解压缩到文件系统的一个目录下。

ExtractToDirectory(ZipArchive, String, Boolean)

将存档中的所有文件都解压缩到文件系统的一个目录下。

ExtractToDirectory(ZipArchive, String)

Source:
ZipFileExtensions.ZipArchive.Extract.cs
Source:
ZipFileExtensions.ZipArchive.Extract.cs
Source:
ZipFileExtensions.ZipArchive.Extract.cs

将 zip 存档中的所有文件都解压缩到文件系统的一个目录下。

C#
public static void ExtractToDirectory (this System.IO.Compression.ZipArchive source, string destinationDirectoryName);

参数

source
ZipArchive

从中提取文件的 zip 存档。

destinationDirectoryName
String

要在其中放置解压缩的文件的目录路径。 可以指定相对或绝对路径。 相对路径被解释为相对于当前工作目录。

例外

destinationDirectoryNameEmpty,仅包含空格,或者包含至少一个无效字符。

destinationDirectoryNamenull

指定路径的长度超出系统定义的最大长度。

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

一个在存档中的输入名称是 Empty,仅包含空白或包含至少一个无效字符。

- 或 -

从存档中解压缩一个条目将在 destinationDirectoryName 指定的目录之外创建一个文件。 (例如,如果该输入名称包括父目录访问器,则这可能发生。)

- 或 -

存档中的两个或多个条目名相同。

调用方没有写入目标目录所需的权限。

destinationDirectoryName 包含无效格式。

存档条目无法找到或已损坏。

- 或 -

使用了一种不支持的压缩方法压缩存档条目。

示例

以下示例演示如何从现有文件在 zip 存档中创建新条目,并将存档提取到新目录。

C#
using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string zipPath = @"c:\users\exampleuser\start.zip";
            string extractPath = @"c:\users\exampleuser\extract";
            string newFile = @"c:\users\exampleuser\NewFile.txt";

            using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update))
            {
                archive.CreateEntryFromFile(newFile, "NewEntry.txt");
                archive.ExtractToDirectory(extractPath);
            }
        }
    }
}

注解

此方法创建 由 destinationDirectoryName指定的目录。 方法还会创建反映 zip 存档中的层次结构的子目录。 如果在提取过程中发生错误,存档将保持部分提取状态。 每个提取的文件都具有指定的 destinationDirectoryName 目录的相对路径,因为它的源条目对存档的根目录具有相同的路径。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ExtractToDirectory(ZipArchive, String, Boolean)

Source:
ZipFileExtensions.ZipArchive.Extract.cs
Source:
ZipFileExtensions.ZipArchive.Extract.cs
Source:
ZipFileExtensions.ZipArchive.Extract.cs

将存档中的所有文件都解压缩到文件系统的一个目录下。

C#
public static void ExtractToDirectory (this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles);

参数

source
ZipArchive

要提取的 ZipArchive

destinationDirectoryName
String

文件系统上指向目标目录的路径。 路径可以是相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

overwriteFiles
Boolean

true 覆盖现有文件; false 否则。

例外

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

destinationArchiveFileNamenull

指定的路径和/或文件名超过了系统定义的最大长度。

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

ZipArchiveEntry 的名称的长度为零,仅包含空格,或包含一个或多个由 InvalidPathChars 定义的无效字符。

- 或 -

解压缩 ZipArchiveEntry 会导致目标文件位于 destinationArchiveFileName 之外(例如,如果项名称包含父目录访问器)。

- 或 -

ZipArchiveEntry 与一个已从同一存档中解压缩的项同名。

调用方没有所要求的权限。

destinationArchiveFileName 的格式无效。

ZipArchiveEntry 未找到或已损坏。

- 或 -

ZipArchiveEntry 已经通过使用一种不被支持的压缩方法压缩。

注解

指定的目录可能已存在。 如有必要,此方法会创建指定的目录和所有子目录。

如果在提取存档时出错,存档将保持部分提取状态。

提取每个条目,使提取的文件具有与条目对存档根目录相同的相对路径 destinationDirectoryName

如果要存档的文件的上次修改时间无效,则使用 1980 年 1 月 1 日午夜 (zip 时间戳格式表示的第一个日期和时间) 。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1