ZipFileExtensions.ExtractToDirectory 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將壓縮檔中的所有檔案解壓到檔案系統上的目錄。
多載
| 名稱 | Description |
|---|---|
| ExtractToDirectory(ZipArchive, String, ZipExtractionOptions) | |
| ExtractToDirectory(ZipArchive, String, Boolean) |
將壓縮檔中的所有檔案解壓到檔案系統上的目錄。 |
| ExtractToDirectory(ZipArchive, String) |
將壓縮壓縮檔中的所有檔案解壓到檔案系統的目錄中。 |
ExtractToDirectory(ZipArchive, String, ZipExtractionOptions)
public:
[System::Runtime::CompilerServices::Extension]
static void ExtractToDirectory(System::IO::Compression::ZipArchive ^ source, System::String ^ destinationDirectoryName, System::IO::Compression::ZipExtractionOptions ^ options);
public static void ExtractToDirectory(this System.IO.Compression.ZipArchive source, string destinationDirectoryName, System.IO.Compression.ZipExtractionOptions options);
static member ExtractToDirectory : System.IO.Compression.ZipArchive * string * System.IO.Compression.ZipExtractionOptions -> unit
<Extension()>
Public Sub ExtractToDirectory (source As ZipArchive, destinationDirectoryName As String, options As ZipExtractionOptions)
參數
- source
- ZipArchive
- destinationDirectoryName
- String
指向存放擷取檔案目錄的路徑。 目錄本身就可能存在。 缺失目錄會在擷取條目時根據需要建立。
- options
- ZipExtractionOptions
備註
Warning
此方法不得用於解壓不受信任的檔案。 它不強制執行任何大小限制、條目數量限制或其他安全解壓不可信檔案所需的政策。 欲了解更多如何安全解壓來自不可信來源的壓縮檔,請參閱 使用壓縮檔與 tar 壓縮檔的最佳實務。
由指定的 destinationDirectoryName 目錄可能已經存在。 此方法在萃取條目時會建立目的目錄、其缺失的父目錄及子目錄。 如果壓縮檔是空的,這個方法不會建立目的目錄。
每個解壓檔案的相對路徑 destinationDirectoryName 與其來源條目到壓縮檔根節點的路徑相同。
參數 destinationDirectoryName 接受相對路徑與絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。
若解壓過程中發生錯誤,該壓縮檔仍維持部分解壓狀態。
設定 OverwriteFiles 為 以 true 覆蓋現有檔案。 預設值為 false,若已有檔案存在,則會拋出 。IOException
用來 Password 提供加密條目的密碼。
EntryNameEncoding 不被這種過載使用。 條目名稱與註解會依開啟壓縮檔時 source 指定的編碼來解碼。
檔案庫中的符號連結不會被重新建立為符號連結。 如果 destinationDirectoryName 其父目錄中或任何一個已存在的連接或符號連結,則會跟隨該連結,並寫入最終目標資料夾。
適用於
ExtractToDirectory(ZipArchive, String, Boolean)
將壓縮檔中的所有檔案解壓到檔案系統上的目錄。
public:
[System::Runtime::CompilerServices::Extension]
static void ExtractToDirectory(System::IO::Compression::ZipArchive ^ source, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory(this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : System.IO.Compression.ZipArchive * string * bool -> unit
<Extension()>
Public Sub ExtractToDirectory (source As ZipArchive, destinationDirectoryName As String, overwriteFiles As Boolean)
參數
- source
- ZipArchive
要 ZipArchive 提取。
- destinationDirectoryName
- String
檔案系統中目的地目錄的路徑。 路徑可為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。 目錄本身就可能存在。 缺失目錄會在擷取條目時根據需要建立。
- overwriteFiles
- Boolean
true 覆寫現有檔案; false 否則,
例外狀況
destinationDirectoryName 是零長度字串,僅包含空白,或包含一個或多個無效字元,定義如下 InvalidPathChars。
destinationDirectoryName 是 null。
指定的路徑、檔名或兩者都超過系統定義的最大長度。
指定的路徑無效(例如,它位於未對應的磁碟驅動器上)。
a ZipArchiveEntry 的名稱長度為零,僅包含空白,或包含一個或多個無效字元,定義如下 InvalidPathChars。
-或-
解壓 會 ZipArchiveEntry 產生一個位於外部 destinationDirectoryName 的目的檔案(例如,若條目名稱包含父目錄存取者)。
-或-
A ZipArchiveEntry 與已從同一壓縮庫中解壓的條目名稱相同。
來電者沒有所需的權限。
destinationDirectoryName 格式無效。
備註
Warning
此方法不得用於解壓不受信任的檔案。 它不強制執行任何大小限制、條目數量限制或其他安全解壓不可信檔案所需的政策。 欲了解更多如何安全解壓來自不可信來源的壓縮檔,請參閱 使用壓縮檔與 tar 壓縮檔的最佳實務。
由指定的 destinationDirectoryName 目錄可能已經存在。 此方法在萃取條目時會建立目的目錄、其缺失的父目錄及子目錄。 如果壓縮檔是空的,這個方法不會建立目的目錄。
若解壓時發生錯誤,該壓縮檔將保持部分解壓狀態。
每個項目的解壓路徑與該條目到檔案根目錄的路徑 destinationDirectoryName 相同。
若要歸檔的檔案最後修改時間無效,則使用Zip時間戳格式中可表示的第一個日期與時間(1980年1月1日午夜)。
適用於
ExtractToDirectory(ZipArchive, String)
將壓縮壓縮檔中的所有檔案解壓到檔案系統的目錄中。
public:
[System::Runtime::CompilerServices::Extension]
static void ExtractToDirectory(System::IO::Compression::ZipArchive ^ source, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory(this System.IO.Compression.ZipArchive source, string destinationDirectoryName);
static member ExtractToDirectory : System.IO.Compression.ZipArchive * string -> unit
<Extension()>
Public Sub ExtractToDirectory (source As ZipArchive, destinationDirectoryName As String)
參數
- source
- ZipArchive
zip 壓縮檔用來解壓檔案。
- destinationDirectoryName
- String
就是將解壓檔案放入目錄的路徑。 你可以指定一個相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。 目錄本身就可能存在。 缺失目錄會在擷取條目時根據需要建立。
例外狀況
destinationDirectoryName 是 Empty,僅包含空白,或至少包含一個無效字元。
destinationDirectoryName 是 null。
指定的路徑超過系統定義的最大長度。
指定的路徑無效(例如,它位於未對應的磁碟驅動器上)。
檔案中條目的名稱為 Empty,僅包含空白,或至少包含一個無效字元。
-或-
從壓縮檔中擷取條目會產生一個位於由 destinationDirectoryName所指定的目錄之外的檔案。 (例如,如果條目名稱包含父目錄存取者,可能會發生這種情況。)
-或-
檔案中兩個或以上條目名稱相同。
呼叫者沒有寫入目的目錄所需的權限。
destinationDirectoryName 包含無效格式。
範例
以下範例說明如何從現有檔案建立壓縮壓縮檔的新條目,並將該壓縮檔解壓到新目錄。
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);
}
}
}
}
Imports System.IO
Imports System.IO.Compression
Module Module1
Sub Main()
Dim zipPath As String = "c:\users\exampleuser\end.zip"
Dim extractPath As String = "c:\users\exampleuser\extract"
Dim newFile As String = "c:\users\exampleuser\NewFile.txt"
Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
archive.CreateEntryFromFile(newFile, "NewEntry.txt", CompressionLevel.Fastest)
archive.ExtractToDirectory(extractPath)
End Using
End Sub
End Module
備註
Warning
此方法不得用於解壓不受信任的檔案。 它不強制執行任何大小限制、條目數量限制或其他安全解壓不可信檔案所需的政策。 欲了解更多如何安全解壓來自不可信來源的壓縮檔,請參閱 使用壓縮檔與 tar 壓縮檔的最佳實務。
由指定的 destinationDirectoryName 目錄可能已經存在。 此方法在萃取條目時會建立目的目錄、其缺失的父目錄及子目錄。 如果壓縮檔是空的,這個方法不會建立目的目錄。
若解壓過程中發生錯誤,該壓縮檔仍維持部分解壓狀態。 每個解壓檔案對指定的 destinationDirectoryName 目錄的相對路徑,與其來源條目到壓縮檔根節點的路徑相同。