ZipFile.CreateFromDirectory 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立一個包含指定目錄檔案與目錄的壓縮壓縮檔。
多載
| 名稱 | 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)
在指定的串流中建立一個包含該目錄檔案與目錄的 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
就是要存放壓縮壓縮檔的串流。
例外狀況
sourceDirectoryName 或 destination 為 null。
在 sourceDirectoryName中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。
sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。
sourceDirectoryName 包含無效格式。
備註
檔案系統的目錄結構會保留在壓縮檔中。 若目錄為空,則會建立一個空壓縮檔。 此方法過載不包含壓縮檔中的基礎目錄,且不允許你指定壓縮等級。 如果你想包含基礎目錄或指定壓縮等級,請呼叫 CreateFromDirectory(String, Stream, CompressionLevel, Boolean) 方法過載。 如果目錄中的檔案無法加入壓縮檔,則歸檔會不完整且無效,並會拋 IOException 出例外。
適用於
CreateFromDirectory(String, String)
建立一個包含指定目錄檔案與目錄的壓縮壓縮檔。
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
要建立的檔案路徑,指定為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。
例外狀況
sourceDirectoryName 或 destinationArchiveFileName 是 Empty,僅包含空白,或至少包含一個無效字元。
sourceDirectoryName 或 destinationArchiveFileName 為 null。
在 或 sourceDirectoryNamedestinationArchiveFileName中,指定的路徑、檔名或兩者都超過系統定義的最大長度。
sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。
destinationArchiveFileName 指定一個目錄。
-或-
呼叫者沒有權限存取 中 sourceDirectoryName 指定的目錄或 中 destinationArchiveFileName指定的檔案。
範例
這個範例展示了如何使用 類別建立並解壓 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)
在指定的串流中建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級,並可選擇包含基礎目錄。
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;僅包含目錄內容。
例外狀況
sourceDirectoryName 或 destination 為 null。
在 sourceDirectoryName中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。
sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。
sourceDirectoryName 包含無效格式。
compressionLevel 不是一個有效的 CompressionLevel 值。
備註
檔案系統的目錄結構會保留在壓縮檔中。 若目錄為空,則會建立一個空壓縮檔。 使用此方法超載來指定壓縮等級,以及是否要將基礎目錄納入壓縮檔。 如果目錄中的檔案無法加入壓縮檔,則歸檔會不完整且無效,並會拋 IOException 出例外。
適用於
CreateFromDirectory(String, String, CompressionLevel, Boolean)
建立一個包含指定目錄檔案與目錄的壓縮壓縮檔,並可選擇包含基礎目錄的壓縮壓縮檔。
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;僅包含目錄內容。
例外狀況
sourceDirectoryName 或 destinationArchiveFileName 是 Empty,僅包含空白,或至少包含一個無效字元。
sourceDirectoryName 或 destinationArchiveFileName 為 null。
在 或 sourceDirectoryNamedestinationArchiveFileName中,指定的路徑、檔名或兩者都超過系統定義的最大長度。
sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。
destinationArchiveFileName 指定一個目錄。
-或-
呼叫者沒有權限存取 中 sourceDirectoryName 指定的目錄或 中 destinationArchiveFileName指定的檔案。
範例
這個範例展示了如何使用 類別建立並解壓 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)
在指定的串流中建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級與字元編碼作為條目名稱與註解,並可選擇包含基礎目錄。
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 壓縮工具和函式庫互通時,才指定此參數值。
例外狀況
sourceDirectoryName 或 destination 為 null。
在 sourceDirectoryName中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。
sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。
sourceDirectoryName 包含無效格式。
compressionLevel 不是一個有效的 CompressionLevel 值。
備註
檔案系統的目錄結構會保留在壓縮檔中。 若目錄為空,則會建立一個空壓縮檔。 使用此方法超載來指定壓縮等級與字元編碼,並決定是否將基礎目錄納入壓縮檔。 如果目錄中的檔案無法加入壓縮檔,則歸檔會不完整且無效,並會拋 IOException 出例外。
適用於
CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)
建立一個壓縮壓縮檔,包含指定目錄中的檔案與目錄,使用指定的壓縮等級與字元編碼作為條目名稱與註解,並可選擇包含基礎目錄。
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 壓縮工具和函式庫互通時,才指定此參數值。
例外狀況
sourceDirectoryName 或 destinationArchiveFileName 是 Empty,僅包含空白,或至少包含一個無效字元。
-或-
entryNameEncoding 設定為非 UTF-8 的 Unicode 編碼。
sourceDirectoryName 或 destinationArchiveFileName 為 null。
在 或 sourceDirectoryNamedestinationArchiveFileName中,指定的路徑、檔名或兩者都超過系統定義的最大長度。
sourceDirectoryName 無效或不存在(例如,它位於未映射的磁碟機上)。
destinationArchiveFileName 指定一個目錄。
-或-
呼叫者沒有權限存取 中 sourceDirectoryName 指定的目錄或 中 destinationArchiveFileName指定的檔案。
備註
檔案系統的目錄結構會保留在壓縮檔中。 若目錄為空,則會建立一個空壓縮檔。 使用此方法超載來指定壓縮等級與字元編碼,並決定是否將基礎目錄納入壓縮檔。
如果該檔案庫已經存在, IOException 則會拋出例外。 如果存檔中已有指定名稱的條目,則會建立另一個相同名稱的條目。
如果目錄中的檔案無法加入壓縮檔,則歸檔會不完整且無效,並會拋 IOException 出例外。
若 entryNameEncoding 設定為非 null的值,則條目名稱與註解會依指定編碼方式編碼。 若指定的編碼為 UTF-8 編碼,則會為每個項目設定語言編碼旗標(在本地檔案標頭的通用位元旗標中)。
若 entryNameEncoding 設為 null,則條目名稱與註解依以下規則編碼:
對於包含 ASCII 範圍外字元的條目名稱與註解,則設定語言編碼標誌,並使用 UTF-8 編碼條目名稱與註解。
對於僅包含 ASCII 字元的條目名稱與註解,則不設定語言編碼標誌,並使用目前系統預設的代碼頁來編碼條目名稱與註解。