ZipFile.CreateFromDirectory 方法

定义

创建 zip 存档,该存档包含指定目录的文件和目录。

重载

CreateFromDirectory(String, Stream)

在指定的流中创建 zip 存档,其中包含指定目录中的文件和目录。

CreateFromDirectory(String, String)

创建 zip 存档,该存档包含指定目录的文件和目录。

CreateFromDirectory(String, Stream, CompressionLevel, Boolean)

在指定流中创建 zip 存档,其中包含指定目录中的文件和目录,使用指定的压缩级别,并选择性地包含基目录。

CreateFromDirectory(String, String, CompressionLevel, Boolean)

创建 zip 存档,该存档包括指定目录的文件和目录,使用指定压缩级别,以及可以选择包含基目录。

CreateFromDirectory(String, Stream, CompressionLevel, Boolean, Encoding)

在包含指定目录中的文件和目录的指定流中创建 zip 存档,对条目名称使用指定的压缩级别和字符编码,并选择性地包含基目录。

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

创建 zip 存档,该存档包括文件和指定目录的目录,使用指定压缩级别和条目名称的字符编码,以及可以选择包含基目录。

CreateFromDirectory(String, Stream)

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

在指定的流中创建 zip 存档,其中包含指定目录中的文件和目录。

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::IO::Stream ^ destination);
public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination);
static member CreateFromDirectory : string * System.IO.Stream -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destination As Stream)

参数

sourceDirectoryName
String

到要存档的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

destination
Stream

要存储 zip 存档的流。

例外

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

- 或 -

destination 不支持写入。

sourceDirectoryNamedestinationnull

sourceDirectoryName 指定的路径中,文件名或两者都超过了系统定义的最大长度。

sourceDirectoryName 无效或不存在(例如,在未映射的驱动器上)。

未能打开指定目录中的文件。

- 或 -

打开要存档的文件时发生 I/O 错误。

sourceDirectoryName 包含无效格式。

注解

文件系统中的目录结构保留在存档中。 如果目录为空,则会创建一个空存档。 此方法重载不包括存档中的基目录,并且不允许指定压缩级别。 如果要包含基目录或指定压缩级别,请 CreateFromDirectory(String, Stream, CompressionLevel, Boolean) 调用 方法重载。 如果目录中的文件无法添加到存档中,则存档不完整且无效,并且 方法将 IOException 引发异常。

适用于

CreateFromDirectory(String, String)

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

创建 zip 存档,该存档包含指定目录的文件和目录。

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName);
static member CreateFromDirectory : string * string -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String)

参数

sourceDirectoryName
String

到要存档的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

destinationArchiveFileName
String

要生成的存档路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

例外

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

sourceDirectoryNamedestinationArchiveFileNamenull

sourceDirectoryNamedestinationArchiveFileName 内,指定的路径、文件名或者两者都超出了系统定义的最大长度。

sourceDirectoryName 无效或不存在(例如,在未映射的驱动器上)。

destinationArchiveFileName 已存在。

- 或 -

未能打开指定目录中的文件。

- 或 -

打开要存档的文件时发生 I/O 错误。

destinationArchiveFileName 指定目录。

- 或 -

调用方不具有访问在 sourceDirectoryName 中指定的目录或在 destinationArchiveFileName 中指定的文件的所需权限。

sourceDirectoryNamedestinationArchiveFileName 包含的格式无效。

- 或 -

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

注解

文件系统中的目录结构保留在存档中。 如果目录为空,则会创建一个空存档。 此方法重载不包括存档中的基目录,并且不允许指定压缩级别。 如果要包含基目录或指定压缩级别,请 CreateFromDirectory(String, String, CompressionLevel, Boolean) 调用 方法重载。

如果存档已存在, IOException 则会引发异常。 如果存档中已存在具有指定名称的条目,则会创建具有相同名称的第二个条目。

如果目录中的文件无法添加到存档中,则存档不完整且无效,并且 方法将 IOException 引发异常。

适用于

CreateFromDirectory(String, Stream, CompressionLevel, Boolean)

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

在指定流中创建 zip 存档,其中包含指定目录中的文件和目录,使用指定的压缩级别,并选择性地包含基目录。

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::IO::Stream ^ destination, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory);
public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);
static member CreateFromDirectory : string * System.IO.Stream * System.IO.Compression.CompressionLevel * bool -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destination As Stream, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean)

参数

sourceDirectoryName
String

到要存档的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

destination
Stream

要存储 zip 存档的流。

compressionLevel
CompressionLevel

指示创建项时是否强调速度或压缩有效性的枚举值之一。

includeBaseDirectory
Boolean

包括从在存档的根的 sourceDirectoryName 的目录名称,则为 true;仅包含目录中的内容,则为 false

例外

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

- 或 -

destination 不支持写入。

sourceDirectoryNamedestinationnull

sourceDirectoryName 指定的路径中,文件名或两者都超过了系统定义的最大长度。

sourceDirectoryName 无效或不存在(例如,在未映射的驱动器上)。

未能打开指定目录中的文件。

- 或 -

打开要存档的文件时发生 I/O 错误。

sourceDirectoryName 包含无效格式。

compressionLevel 不是有效的 CompressionLevel 值。

注解

文件系统中的目录结构保留在存档中。 如果目录为空,则会创建一个空存档。 使用此方法重载指定压缩级别以及是否在存档中包含基目录。 如果目录中的文件无法添加到存档中,则存档不完整且无效,并且 方法将 IOException 引发异常。

适用于

CreateFromDirectory(String, String, CompressionLevel, Boolean)

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

创建 zip 存档,该存档包括指定目录的文件和目录,使用指定压缩级别,以及可以选择包含基目录。

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean)

参数

sourceDirectoryName
String

到要存档的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

destinationArchiveFileName
String

要生成的存档路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

compressionLevel
CompressionLevel

指示创建项时是否强调速度或压缩有效性的枚举值之一。

includeBaseDirectory
Boolean

包括从在存档的根的 sourceDirectoryName 的目录名称,则为 true;仅包含目录中的内容,则为 false

例外

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

sourceDirectoryNamedestinationArchiveFileNamenull

sourceDirectoryNamedestinationArchiveFileName 内,指定的路径、文件名或者两者都超出了系统定义的最大长度。

sourceDirectoryName 无效或不存在(例如,在未映射的驱动器上)。

destinationArchiveFileName 已存在。

- 或 -

未能打开指定目录中的文件。

- 或 -

打开要存档的文件时发生 I/O 错误。

destinationArchiveFileName 指定目录。

- 或 -

调用方不具有访问在 sourceDirectoryName 中指定的目录或在 destinationArchiveFileName 中指定的文件的所需权限。

sourceDirectoryNamedestinationArchiveFileName 包含的格式无效。

- 或 -

zip 存档不支持写入。

示例

此示例演示如何使用 ZipFile 类创建和提取 zip 存档。 它将文件夹的内容压缩到 zip 存档中,然后将该内容提取到新文件夹。 压缩存档时,将包含基目录,并设置压缩级别以强调操作速度与效率。 若要使用 ZipFile 类,必须在项目中引用 System.IO.Compression.FileSystem 程序集。

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string startPath = @"c:\example\start";
            string zipPath = @"c:\example\result.zip";
            string extractPath = @"c:\example\extract";

            ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true);

            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
    }
}
open System.IO.Compression

let startPath = @"c:\example\start"
let zipPath = @"c:\example\result.zip"
let extractPath = @"c:\example\extract"

ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true)

ZipFile.ExtractToDirectory(zipPath, extractPath)
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim startPath As String = "c:\example\start"
        Dim zipPath As String = "c:\example\result.zip"
        Dim extractPath As String = "c:\example\extract"

        ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, True)

        ZipFile.ExtractToDirectory(zipPath, extractPath)
    End Sub

End Module

注解

文件系统中的目录结构保留在存档中。 如果目录为空,则会创建一个空存档。 使用此方法重载可指定压缩级别以及是否在存档中包含基目录。

如果存档已存在, IOException 则会引发异常。 如果存档中已存在具有指定名称的条目,则会创建具有相同名称的第二个条目。

如果目录中的文件无法添加到存档中,则存档将不完整且无效,并且 方法将 IOException 引发异常。

适用于

CreateFromDirectory(String, Stream, CompressionLevel, Boolean, Encoding)

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

在包含指定目录中的文件和目录的指定流中创建 zip 存档,对条目名称使用指定的压缩级别和字符编码,并选择性地包含基目录。

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::IO::Stream ^ destination, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory, System::Text::Encoding ^ entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);
static member CreateFromDirectory : string * System.IO.Stream * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destination As Stream, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, entryNameEncoding As Encoding)

参数

sourceDirectoryName
String

到要存档的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

destination
Stream

要存储 zip 存档的流。

compressionLevel
CompressionLevel

指示创建项时是否强调速度或压缩有效性的枚举值之一。

includeBaseDirectory
Boolean

包括从在存档的根的 sourceDirectoryName 的目录名称,则为 true;仅包含目录中的内容,则为 false

entryNameEncoding
Encoding

在存档中读取或写入项名时使用的编码。 仅当需要针对具有不支持条目名称的 UTF-8 编码的 zip 归档工具和库的互操作性进行编码时,为此参数指定值。

例外

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

- 或 -

destination 不支持写入。

sourceDirectoryNamedestinationnull

sourceDirectoryName 指定的路径中,文件名或两者都超过了系统定义的最大长度。

sourceDirectoryName 无效或不存在(例如,在未映射的驱动器上)。

未能打开指定目录中的文件。

- 或 -

打开要存档的文件时发生 I/O 错误。

sourceDirectoryName 包含无效格式。

compressionLevel 不是有效的 CompressionLevel 值。

注解

文件系统中的目录结构保留在存档中。 如果目录为空,则会创建一个空存档。 使用此方法重载可指定压缩级别和字符编码,以及是否在存档中包含基目录。 如果目录中的文件无法添加到存档中,则存档将不完整且无效,并且 方法将 IOException 引发异常。

适用于

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

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

创建 zip 存档,该存档包括文件和指定目录的目录,使用指定压缩级别和条目名称的字符编码,以及可以选择包含基目录。

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory, System::Text::Encoding ^ entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, entryNameEncoding As Encoding)

参数

sourceDirectoryName
String

到要存档的目录的路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

destinationArchiveFileName
String

要生成的存档路径,指定为相对路径或绝对路径。 相对路径被解释为相对于当前工作目录。

compressionLevel
CompressionLevel

指示创建项时是否强调速度或压缩有效性的枚举值之一。

includeBaseDirectory
Boolean

包括从在存档的根的 sourceDirectoryName 的目录名称,则为 true;仅包含目录中的内容,则为 false

entryNameEncoding
Encoding

在存档中读取或写入项名时使用的编码。 仅当需要针对具有不支持条目名称的 UTF-8 编码的 zip 归档工具和库的互操作性进行编码时,为此参数指定值。

例外

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

- 或 -

entryNameEncoding 设置为不同于 UTF-8 的 Unicode 编码。

sourceDirectoryNamedestinationArchiveFileNamenull

sourceDirectoryNamedestinationArchiveFileName 内,指定的路径、文件名或者两者都超出了系统定义的最大长度。

sourceDirectoryName 无效或不存在(例如,在未映射的驱动器上)。

destinationArchiveFileName 已存在。

- 或 -

未能打开指定目录中的文件。

- 或 -

打开要存档的文件时发生 I/O 错误。

destinationArchiveFileName 指定目录。

- 或 -

调用方不具有访问在 sourceDirectoryName 中指定的目录或在 destinationArchiveFileName 中指定的文件的所需权限。

sourceDirectoryNamedestinationArchiveFileName 包含的格式无效。

- 或 -

zip 存档不支持写入。

注解

文件系统中的目录结构保留在存档中。 如果目录为空,则会创建一个空存档。 使用此方法重载可指定压缩级别和字符编码,以及是否在存档中包含基目录。

如果存档已存在, IOException 则会引发异常。 如果存档中已存在具有指定名称的条目,则会创建具有相同名称的第二个条目。

如果目录中的文件无法添加到存档中,则存档将不完整且无效,并且 方法将 IOException 引发异常。

如果 entryNameEncoding 设置为以外的 null值,则使用指定的编码对条目名称进行编码。 如果指定的编码为 UTF-8,则为每个条目设置本地文件头) 的常规用途位标志中的语言编码标志 (,

如果 entryNameEncoding 设置为 null,则根据以下规则对条目名称进行编码:

  • 对于包含 ASCII 范围外字符的条目名称,设置语言编码标志,使用 UTF-8 对条目名称进行编码。

  • 对于仅包含 ASCII 字符的条目名称,将设置语言编码标志,并使用当前系统默认代码页对条目名称进行编码。

适用于