ZipFileExtensions.ExtractToDirectory 方法

定義

多載

ExtractToDirectory(ZipArchive, String)

將 zip 封存中的所有檔案都解壓縮到檔案系統上的目錄。

ExtractToDirectory(ZipArchive, String, Boolean)

將封存中的所有檔案解壓縮到檔案系統上目錄。

ExtractToDirectory(ZipArchive, String)

將 zip 封存中的所有檔案都解壓縮到檔案系統上的目錄。

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

要在其中放置所解壓縮檔案之目錄的路徑。 您可以指定相對或絕對路徑。 相對路徑會解譯為與目前的工作目錄相對。

例外狀況

destinationDirectoryNameEmpty、只包含空白字元,或包含至少一個無效字元。

destinationDirectoryNamenull

指定的路徑超過系統定義的最大長度。

指定的路徑無效 (例如,它位於未對應的磁碟機上)。

封存檔中的項目名稱是Empty,只包含空白字元,或包含至少一個無效的字元。

-或-

從封存中解壓縮項目,會建立不在 destinationDirectoryName 所指定目錄中的檔案。 (例如,如果項目名稱包含父目錄存取子,這就可能發生)。

-或-

封存中有兩個以上同名的項目。

呼叫端沒有寫入目的地目錄的必要權限。

destinationDirectoryName 包含無效的格式。

封存項目找不到或損毀。

-或-

封存項目是使用不支援的壓縮方法進行壓縮。

範例

下列範例示範如何從現有的檔案在 zip 封存中建立新專案,並將封存解壓縮到新的目錄。

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

備註

這個方法會建立 所 destinationDirectoryName 指定的目錄。 方法也會建立子目錄,以反映 zip 封存中的階層。 如果在擷取期間發生錯誤,封存會維持部分擷取狀態。 每個擷取的檔案都有與其來源專案相同的目錄 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 否則。

例外狀況

destinationArchiveFileName 為零長度字串、只包含空格,或包含一或多個如 InvalidPathChars 所定義的無效字元。

destinationArchiveFileNamenull

指定的路徑、檔案名稱,或兩者都超出系統定義的長度上限。

指定的路徑無效 (例如,它位於未對應的磁碟機上)。

ZipArchiveEntry 名稱為零長度、只包含空格,或包含一或多個如 InvalidPathChars 所定義的無效字元。

-或-

解壓縮 destinationArchiveFileName 會導致目的地檔案位於 ZipArchiveEntry 外部 (例如,在項目名稱包含上層目錄存取子的情況下)。

-或-

ZipArchiveEntry 與相同封存中已解壓縮的項目同名。

呼叫端沒有必要的權限。

destinationArchiveFileName 格式無效。

找不到 ZipArchiveEntry,或是其已損毀。

-或-

您使用不支援的壓縮方法來壓縮 ZipArchiveEntry

備註

指定的目錄可能已經存在。 此方法會視需要建立指定的目錄和所有子目錄。

如果在擷取封存時發生錯誤,封存會維持部分解壓縮狀態。

系統會擷取每個專案,讓擷取的檔案具有與專案與封存根目錄相同的相對路徑 destinationDirectoryName

如果要封存的檔案上次修改時間無效,則會使用 Zip 時間戳記格式表示的第一個日期和時間, (1980 年 1 月 1 日午夜) 。

適用於