ZipFile.CreateFromDirectory 方法

定義

建立一個包含指定目錄檔案與目錄的壓縮壓縮檔。

多載

名稱 Description
CreateFromDirectory(String, Stream)

在指定的串流中建立一個包含該目錄檔案與目錄的 zip 壓縮檔。

CreateFromDirectory(String, String)

建立一個包含指定目錄檔案與目錄的壓縮壓縮檔。

CreateFromDirectory(String, Stream, CompressionLevel, Boolean)

在指定的串流中建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級,並可選擇包含基礎目錄。

CreateFromDirectory(String, String, CompressionLevel, Boolean)

建立一個包含指定目錄檔案與目錄的壓縮壓縮檔,並可選擇包含基礎目錄的壓縮壓縮檔。

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

在指定的串流中建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級與字元編碼作為條目名稱與註解,並可選擇包含基礎目錄。

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

建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級與字元編碼作為條目名稱與註解,並可選擇包含基礎目錄。

CreateFromDirectory(String, Stream)

來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
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

就是要存放壓縮壓縮檔的串流。

例外狀況

sourceDirectoryNameEmpty,僅包含空白,或至少包含一個無效字元。

-或-

destination 課程不支援寫作。

sourceDirectoryNamedestinationnull

sourceDirectoryName中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。

sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。

指定目錄中的檔案無法開啟。

-或-

在開啟要歸檔的檔案時發生了 I/O 錯誤。

sourceDirectoryName 包含無效格式。

備註

檔案系統的目錄結構會保留在壓縮檔中。 若目錄為空,則會建立一個空壓縮檔。 此方法過載不包含壓縮檔中的基礎目錄,且不允許你指定壓縮等級。 如果你想包含基礎目錄或指定壓縮等級,請呼叫 CreateFromDirectory(String, Stream, CompressionLevel, Boolean) 方法過載。 如果目錄中的檔案無法加入壓縮檔,則歸檔會不完整且無效,並會拋 IOException 出例外。

適用於

CreateFromDirectory(String, String)

來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs

建立一個包含指定目錄檔案與目錄的壓縮壓縮檔。

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 壓縮壓縮檔。 它會將資料夾內容壓縮成壓縮壓縮檔,然後再將內容解壓到新的資料夾。 要使用該 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)

來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs

在指定的串流中建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級,並可選擇包含基礎目錄。

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

就是要存放壓縮壓縮檔的串流。

compressionLevel
CompressionLevel

其中一個列舉值表示在建立條目時,應該強調速度還是壓縮效能。

includeBaseDirectory
Boolean

true從歸檔sourceDirectoryName根目錄名稱中包含false;僅包含目錄內容。

例外狀況

sourceDirectoryNameEmpty,僅包含空白,或至少包含一個無效字元。

-或-

destination 課程不支援寫作。

sourceDirectoryNamedestinationnull

sourceDirectoryName中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。

sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。

指定目錄中的檔案無法開啟。

-或-

在開啟要歸檔的檔案時發生了 I/O 錯誤。

sourceDirectoryName 包含無效格式。

compressionLevel 不是一個有效的 CompressionLevel 值。

備註

檔案系統的目錄結構會保留在壓縮檔中。 若目錄為空,則會建立一個空壓縮檔。 使用此方法超載來指定壓縮等級,以及是否要將基礎目錄納入壓縮檔。 如果目錄中的檔案無法加入壓縮檔,則歸檔會不完整且無效,並會拋 IOException 出例外。

適用於

CreateFromDirectory(String, String, CompressionLevel, Boolean)

來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs

建立一個包含指定目錄檔案與目錄的壓縮壓縮檔,並可選擇包含基礎目錄的壓縮壓縮檔。

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

true從歸檔sourceDirectoryName根目錄名稱中包含false;僅包含目錄內容。

例外狀況

sourceDirectoryNamedestinationArchiveFileNameEmpty,僅包含空白,或至少包含一個無效字元。

sourceDirectoryNamedestinationArchiveFileNamenull

在 或 sourceDirectoryNamedestinationArchiveFileName中,指定的路徑、檔名或兩者都超過系統定義的最大長度。

sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。

destinationArchiveFileName 已經存在了。

-或-

指定目錄中的檔案無法開啟。

-或-

在開啟要歸檔的檔案時發生了 I/O 錯誤。

destinationArchiveFileName 指定一個目錄。

-或-

呼叫者沒有權限存取 中 sourceDirectoryName 指定的目錄或 中 destinationArchiveFileName指定的檔案。

sourceDirectoryNamedestinationArchiveFileName 包含無效格式。

-或-

zip 壓縮檔不支援書寫。

範例

這個範例展示了如何使用 類別建立並解壓 ZipFile 壓縮壓縮檔。 它會將資料夾內容壓縮成壓縮壓縮檔,然後再將內容解壓到新的資料夾。 壓縮壓縮檔案時會包含基礎目錄,壓縮等級會設定以操作速度勝過效率。 要使用該 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)

來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs

在指定的串流中建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級與字元編碼作為條目名稱與註解,並可選擇包含基礎目錄。

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

就是要存放壓縮壓縮檔的串流。

compressionLevel
CompressionLevel

其中一個列舉值表示在建立條目時,應該強調速度還是壓縮效能。

includeBaseDirectory
Boolean

true從歸檔sourceDirectoryName根目錄名稱中包含false;僅包含目錄內容。

entryNameEncoding
Encoding

閱讀或書寫本檔案中條目名稱與註解時所使用的編碼方式。 只有當需要編碼以與不支援 UTF-8 編碼的 zip 壓縮工具和函式庫互通時,才指定此參數值。

例外狀況

sourceDirectoryNameEmpty,僅包含空白,或至少包含一個無效字元。

-或-

destination 課程不支援寫作。

sourceDirectoryNamedestinationnull

sourceDirectoryName中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。

sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。

指定目錄中的檔案無法開啟。

-或-

在開啟要歸檔的檔案時發生了 I/O 錯誤。

sourceDirectoryName 包含無效格式。

compressionLevel 不是一個有效的 CompressionLevel 值。

備註

檔案系統的目錄結構會保留在壓縮檔中。 若目錄為空,則會建立一個空壓縮檔。 使用此方法超載來指定壓縮等級與字元編碼,並決定是否將基礎目錄納入壓縮檔。 如果目錄中的檔案無法加入壓縮檔,則歸檔會不完整且無效,並會拋 IOException 出例外。

適用於

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

來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs
來源:
ZipFile.Create.cs

建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級與字元編碼作為條目名稱與註解,並可選擇包含基礎目錄。

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

true從歸檔sourceDirectoryName根目錄名稱中包含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 字元的條目名稱與註解,則不設定語言編碼標誌,並使用目前系統預設的代碼頁來編碼條目名稱與註解。

適用於