ZipFile.CreateFromDirectory 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立包含指定目錄中檔案及目錄的 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)
在指定的數據流中建立 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 封存的數據流。
例外狀況
sourceDirectoryName
或 destination
為 null
。
在 sourceDirectoryName
指定的路徑、檔名或兩者中,都超過系統定義的最大長度。
sourceDirectoryName
無效或不存在 (例如,位於未對應的磁碟機上)。
sourceDirectoryName
包含無效的格式。
備註
檔案系統中的目錄結構會保留在封存中。 如果目錄是空的,則會建立空的封存。 這個方法多載不會在封存中包含基底目錄,而且不允許您指定壓縮層級。 如果您想要包含基底目錄或指定壓縮層級,請呼叫 CreateFromDirectory(String, Stream, CompressionLevel, Boolean) 方法多載。 如果目錄中的檔案無法新增至封存,封存會保持不完整且無效,而且方法會 IOException 擲回例外狀況。
適用於
CreateFromDirectory(String, String)
建立包含指定目錄中檔案及目錄的 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
要建立的封存的路徑(指定為相對或絕對路徑)。 相對路徑會解譯為與目前的工作目錄相對。
例外狀況
sourceDirectoryName
或 destinationArchiveFileName
為 Empty,只含有空白字元,或者含有至少一個無效字元。
sourceDirectoryName
或 destinationArchiveFileName
為 null
。
在 sourceDirectoryName
或 destinationArchiveFileName
中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。
sourceDirectoryName
無效或不存在 (例如,位於未對應的磁碟機上)。
destinationArchiveFileName
會指定目錄。
-或-
呼叫端沒有必要的權限,無法存取 sourceDirectoryName
中指定的目錄或 destinationArchiveFileName
中指定的檔案。
範例
此範例示範如何使用 類別建立和解壓縮 zip 封存 ZipFile 。 它會將資料夾的內容壓縮成 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)
在指定的數據流中建立 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
true
表示從 sourceDirectoryName
(位於封存根目錄中) 包含目錄名稱,false
表示只包含目錄的內容。
例外狀況
sourceDirectoryName
或 destination
為 null
。
在 sourceDirectoryName
指定的路徑、檔名或兩者中,都超過系統定義的最大長度。
sourceDirectoryName
無效或不存在 (例如,位於未對應的磁碟機上)。
sourceDirectoryName
包含無效的格式。
compressionLevel
不是有效的 CompressionLevel 值。
備註
檔案系統中的目錄結構會保留在封存中。 如果目錄是空的,則會建立空的封存。 使用這個方法多載來指定壓縮層級,以及是否要在封存中包含基底目錄。 如果目錄中的檔案無法新增至封存,封存會保持不完整且無效,而且方法會 IOException 擲回例外狀況。
適用於
CreateFromDirectory(String, String, CompressionLevel, Boolean)
建立 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
true
表示從 sourceDirectoryName
(位於封存根目錄中) 包含目錄名稱,false
表示只包含目錄的內容。
例外狀況
sourceDirectoryName
或 destinationArchiveFileName
為 Empty,只含有空白字元,或者含有至少一個無效字元。
sourceDirectoryName
或 destinationArchiveFileName
為 null
。
在 sourceDirectoryName
或 destinationArchiveFileName
中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。
sourceDirectoryName
無效或不存在 (例如,位於未對應的磁碟機上)。
destinationArchiveFileName
會指定目錄。
-或-
呼叫端沒有必要的權限,無法存取 sourceDirectoryName
中指定的目錄或 destinationArchiveFileName
中指定的檔案。
範例
此範例示範如何使用 類別建立和解壓縮 zip 封存 ZipFile 。 它會將資料夾的內容壓縮成 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)
在指定的數據流中建立 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
true
表示從 sourceDirectoryName
(位於封存根目錄中) 包含目錄名稱,false
表示只包含目錄的內容。
- entryNameEncoding
- Encoding
在此封存中讀取或寫入項目名稱時要使用的編碼方式。 只有當需要編碼以與 Zip 封存工具和程式庫互通,且這類工具和程式庫不支援項目名稱使用 UTF-8 編碼時,指定此參數的值。
例外狀況
sourceDirectoryName
或 destination
為 null
。
在 sourceDirectoryName
指定的路徑中,檔名或兩者都超過系統定義的最大長度。
sourceDirectoryName
無效或不存在 (例如,位於未對應的磁碟機上)。
sourceDirectoryName
包含無效的格式。
compressionLevel
不是有效的 CompressionLevel 值。
備註
檔案系統中的目錄結構會保留在封存中。 如果目錄是空的,則會建立空的封存。 使用這個方法多載來指定壓縮層級和字元編碼,以及是否要在封存中包含基底目錄。 如果目錄中的檔案無法新增至封存,封存會保持不完整且無效,而且方法會 IOException 擲回例外狀況。
適用於
CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)
建立 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
true
表示從 sourceDirectoryName
(位於封存根目錄中) 包含目錄名稱,false
表示只包含目錄的內容。
- entryNameEncoding
- Encoding
在此封存中讀取或寫入項目名稱時要使用的編碼方式。 只有當需要編碼以與 Zip 封存工具和程式庫互通,且這類工具和程式庫不支援項目名稱使用 UTF-8 編碼時,指定此參數的值。
例外狀況
sourceDirectoryName
或 destinationArchiveFileName
為 Empty,只含有空白字元,或者含有至少一個無效字元。
-或-
entryNameEncoding
會設定為 UTF-8 以外的 Unicode 編碼方式。
sourceDirectoryName
或 destinationArchiveFileName
為 null
。
在 sourceDirectoryName
或 destinationArchiveFileName
中,指定的路徑、檔案名稱或兩者都超過系統定義的最大長度。
sourceDirectoryName
無效或不存在 (例如,位於未對應的磁碟機上)。
destinationArchiveFileName
會指定目錄。
-或-
呼叫端沒有必要的權限,無法存取 sourceDirectoryName
中指定的目錄或 destinationArchiveFileName
中指定的檔案。
備註
檔案系統中的目錄結構會保留在封存中。 如果目錄是空的,則會建立空的封存。 使用這個方法多載來指定壓縮層級和字元編碼,以及是否要在封存中包含基底目錄。
如果封存已經存在, IOException 則會擲回例外狀況。 如果封存中已經存在具有指定名稱的專案,則會使用相同的名稱建立第二個專案。
如果目錄中的檔案無法新增至封存,封存會保持不完整且無效,而且方法會 IOException 擲回例外狀況。
如果 entryNameEncoding
設定為 以外的 null
值,則項目名稱會使用指定的編碼進行編碼。 如果指定的編碼是UTF-8,則會針對每個項目設定本機檔頭的一般用途位旗標 (語言編碼旗標) 。
如果 entryNameEncoding
設定為 null
,則項目名稱會根據下列規則進行編碼:
針對包含 ASCII 範圍外字元的專案名稱,會設定語言編碼旗標,並使用 UTF-8 來編碼項目名稱。
針對僅包含 ASCII 字元的專案名稱,會設定語言編碼旗標,並使用目前的系統預設代碼頁來編碼專案名稱。