語言

ZipFile.ExtractToDirectoryAsync 方法

定義

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

多載

名稱 Description
ExtractToDirectoryAsync(String, String, Encoding, Boolean, CancellationToken)

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

指定的目錄不存在。 此方法將建立所有子目錄及指定的目錄。

若解壓時發生錯誤,該壓縮檔將保持部分解壓狀態。 每個項目都會被解壓,使得所解壓縮的檔案與 destinationDirectoryName 的相對路徑與該條目對壓縮檔的路徑相同。 路徑可指定相對或絕對路徑資訊。 相對路徑資訊會被解讀為相對於目前工作目錄的相對於。 若要歸檔的檔案最後修改時間無效,則會使用第一個可以壓縮時間戳格式表示的日期時間(1980年1月1日午夜)。

ExtractToDirectoryAsync(Stream, String, Encoding, Boolean, CancellationToken)

非同步解壓指定串流中儲存的所有 zip 壓縮檔,並將其置於檔案系統指定的目的地目錄,使用指定的字元編碼作為條目名稱,並可選擇是否覆蓋目標目錄中的檔案。

ExtractToDirectoryAsync(String, String, Encoding, CancellationToken)

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

ExtractToDirectoryAsync(String, String, ZipExtractionOptions, CancellationToken)
ExtractToDirectoryAsync(String, String, Boolean, CancellationToken)

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

ExtractToDirectoryAsync(Stream, String, ZipExtractionOptions, CancellationToken)
ExtractToDirectoryAsync(Stream, String, Boolean, CancellationToken)

非同步解壓指定串流中儲存的所有壓縮壓縮檔,並將其置於檔案系統指定的目的地目錄中,並可選擇是否覆蓋目的地目錄中的檔案。

ExtractToDirectoryAsync(String, String, CancellationToken)

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

ExtractToDirectoryAsync(Stream, String, CancellationToken)

非同步解壓所有儲存在指定串流中的壓縮壓縮檔,並將其置於檔案系統指定的目的地目錄中。

ExtractToDirectoryAsync(Stream, String, Encoding, CancellationToken)

非同步解壓所有儲存在指定串流中的 zip 壓縮檔,並將其置於檔案系統指定的目的地目錄,並使用指定的字元編碼作為條目名稱。

ExtractToDirectoryAsync(String, String, Encoding, Boolean, CancellationToken)

來源:
ZipFile.Extract.Async.cs
來源:
ZipFile.Extract.Async.cs

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

指定的目錄不存在。 此方法將建立所有子目錄及指定的目錄。

若解壓時發生錯誤,該壓縮檔將保持部分解壓狀態。 每個項目都會被解壓,使得所解壓縮的檔案與 destinationDirectoryName 的相對路徑與該條目對壓縮檔的路徑相同。 路徑可指定相對或絕對路徑資訊。 相對路徑資訊會被解讀為相對於目前工作目錄的相對於。 若要歸檔的檔案最後修改時間無效,則會使用第一個可以壓縮時間戳格式表示的日期時間(1980年1月1日午夜)。

public static System.Threading.Tasks.Task ExtractToDirectoryAsync(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : string * string * System.Text.Encoding * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding, overwriteFiles As Boolean, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

sourceArchiveFileName
String

要解壓的檔案系統中通往檔案庫的路徑。

destinationDirectoryName
String

指向存放擷取檔案的目錄路徑,指定為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。

entryNameEncoding
Encoding

閱讀或寫入此 ZipArchive 中條目名稱與註解時所使用的編碼。

overwriteFiles
Boolean

true 覆寫檔案; false 否則,

cancellationToken
CancellationToken

取消令牌用來監控取消申請。

傳回

例外狀況

sourceArchiveFileName 或 destinationDirectoryName 為零長度字串、僅含空白,或包含一個或多個無效字元,依 InvalidPathChars 定義。

sourceArchiveFileName 或 destinationDirectoryName 為 null。

sourceArchiveFileName 或 destinationDirectoryName 指定超過系統定義最大長度的路徑、檔名或兩者。 例如,在基於 Windows 的平台上,路徑必須少於 248 個字元,檔案名稱必須少於 260 個字元。

由 sourceArchiveFileName 或 destinationDirectoryName 指定的路徑是無效的(例如,它位於未映射的硬碟上)。

發生了 I/O 錯誤。

-或-

歸檔項目名稱為零長度,僅包含空白,或包含一個或多個無效字元,依 InvalidPathChars 定義。

-或-

解壓壓縮壓縮檔項目會導致檔案目的地位於目的地目錄之外(例如,因為父目錄存取器)。

-或-

一個檔案庫的條目名稱與已從同一檔案庫提取的條目相同。

來電者沒有所需的權限。

sourceArchiveFileName 或 destinationDirectoryName 格式無效。

sourceArchiveFileName 未被找到。

所 sourceArchiveFileName 指定的壓縮檔並非有效的 ZipArchive。

-或-

未找到檔案記錄或已損壞。

-或-

壓縮檔條目被壓縮為不支援的壓縮方式。

非同步操作被取消。

備註

若 entryNameEncoding 設定為非 null的值,則條目名稱與註解依以下規則解碼:

  • 對於本地檔案標頭通用位元旗標中語言編碼旗標(EFS)未設定的條目,請使用指定的 entryNameEncoding 標示來解碼條目名稱與註解。
  • 對於設定了本地檔案標頭通用位元旗標中語言編碼旗標(EFS)的條目,請使用 UTF-8 (Encoding.UTF8) 來解碼條目名稱並註解。

若 entryNameEncoding 設為 null,則條目名稱與註解依以下規則解碼:

  • 對於本地檔案標頭通用位元旗標中語言編碼旗標(EFS)未設定的條目,請使用目前系統預設代碼頁(Encoding.Default)來解碼條目名稱並註解。
  • 對於設定了本地檔案標頭通用位元旗標中語言編碼旗標(EFS)的條目,請使用 UTF-8 (Encoding.UTF8) 來解碼條目名稱並註解。

除了 UTF-8 以外的 Unicode 編碼無法用於 entryNameEncoding,否則會拋出 an ArgumentException 。

警告

此方法不限制未壓縮總大小或從壓縮檔中提取的條目數量。 處理來自不受信任來源的壓縮檔時,手動遍 ZipArchive歷條目,並驗證未壓縮的總大小與條目數量是否在你情境下的可接受範圍內。

適用於

ExtractToDirectoryAsync(Stream, String, Encoding, Boolean, CancellationToken)

來源:
ZipFile.Create.cs
來源:
ZipFile.Extract.Async.cs

非同步解壓指定串流中儲存的所有 zip 壓縮檔,並將其置於檔案系統指定的目的地目錄,使用指定的字元編碼作為條目名稱,並可選擇是否覆蓋目標目錄中的檔案。

public static System.Threading.Tasks.Task ExtractToDirectoryAsync(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : System.IO.Stream * string * System.Text.Encoding * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (source As Stream, destinationDirectoryName As String, entryNameEncoding As Encoding, overwriteFiles As Boolean, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

source
Stream

壓縮檔要從中解壓的串流。

destinationDirectoryName
String

指向存放擷取檔案的目錄路徑,指定為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。

entryNameEncoding
Encoding

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

overwriteFiles
Boolean

true 覆寫檔案; false 否則,

cancellationToken
CancellationToken

取消令牌用來監控取消申請。

傳回

例外狀況

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

-或-

entryNameEncoding 設定為非 UTF-8 的 Unicode 編碼。

destinationDirectoryName 或 source 為 null。

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

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

檔案中條目的名稱為 Empty,僅包含空白,或至少包含一個無效字元。

-或-

解壓壓縮檔條目會產生一個位於由 destinationDirectoryName所指定的目錄之外的檔案。 (例如,如果條目名稱包含父目錄存取者,可能會發生這種情況。)

-或-

overwriteFiles 且 false 要擷取的檔案項目名稱與已擷取或存在於 destinationDirectoryName中的項目相同。

呼叫者沒有存取歸檔或目的目錄所需的權限。

destinationDirectoryName 包含無效格式。

串流中包含的 source 壓縮檔並非有效的壓縮壓縮檔。

-或-

未找到檔案記錄或已損壞。

-或-

壓縮檔條目是用不支援的壓縮方法壓縮的。

非同步操作被取消。

備註

此方法建立指定的目錄及所有子目錄。 目的地目錄不可能已經存在。 與驗證參數中 destinationDirectoryName zip 壓縮檔中路徑驗證的source例外會在解壓前拋出。 否則,若在解壓過程中發生錯誤,該壓縮檔仍維持部分解壓狀態。 每個解壓檔案對指定的 destinationDirectoryName 目錄的相對路徑,與其來源條目到壓縮檔根節點的路徑相同。

若要歸檔的檔案最後修改時間無效,則會使用壓縮時間戳格式中第一個可表示的日期與時間(1980年1月1日午夜)。

警告

此方法不限制未壓縮總大小或從壓縮檔中提取的條目數量。 處理來自不受信任來源的壓縮檔時,手動遍 ZipArchive歷條目,並驗證未壓縮的總大小與條目數量是否在你情境下的可接受範圍內。

適用於

ExtractToDirectoryAsync(String, String, Encoding, CancellationToken)

來源:
ZipFile.Extract.Async.cs
來源:
ZipFile.Extract.Async.cs

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

public static System.Threading.Tasks.Task ExtractToDirectoryAsync(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : string * string * System.Text.Encoding * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

sourceArchiveFileName
String

要解壓的檔案系統中通往檔案庫的路徑。

destinationDirectoryName
String

檔案系統中目錄的路徑。 指定的目錄必須不存在,但包含該目錄的目錄必須存在。

entryNameEncoding
Encoding

閱讀或寫入此 ZipArchive 中條目名稱與註解時所使用的編碼。

cancellationToken
CancellationToken

取消令牌用來監控取消申請。

傳回

例外狀況

sourceArchiveFileName 或 destinationDirectoryName 為零長度字串、僅含空白,或包含一個或多個無效字元,依 InvalidPathChars 定義。

sourceArchiveFileName 或 destinationDirectoryName 為 null。

sourceArchiveFileName 或 destinationDirectoryName 指定超過系統定義最大長度的路徑、檔名或兩者。 例如,在基於 Windows 的平台上,路徑必須少於 248 個字元,檔案名稱必須少於 260 個字元。

由 sourceArchiveFileName 或 destinationDirectoryName 指定的路徑是無效的(例如,它位於未映射的硬碟上)。

發生了 I/O 錯誤。

-或-

歸檔項目名稱為零長度,僅包含空白,或包含一個或多個無效字元,依 InvalidPathChars 定義。

-或-

解壓壓縮壓縮檔項目會導致檔案目的地位於目的地目錄之外(例如,因為父目錄存取器)。

-或-

一個檔案庫的條目名稱與已從同一檔案庫提取的條目相同。

來電者沒有所需的權限。

sourceArchiveFileName 或 destinationDirectoryName 格式無效。

sourceArchiveFileName 未被找到。

所 sourceArchiveFileName 指定的壓縮檔並非有效的 ZipArchive。

-或-

未找到檔案記錄或已損壞。

-或-

壓縮檔條目被壓縮為不支援的壓縮方式。

非同步操作被取消。

備註

指定的目錄不存在。 此方法建立所有子目錄及指定的目錄。

若解壓時發生錯誤,該壓縮檔仍保持部分解壓狀態。 每個項目的解壓方式使得擷取後的檔案與該條目到壓縮檔的路徑 destinationDirectoryName 相符。 路徑接受相對或絕對路徑資訊;相對路徑則被解讀為相對於目前工作目錄的相對於。

若要歸檔的檔案最後修改時間無效,則會使用壓縮時間戳格式中第一個可表示的日期與時間(1980年1月1日午夜)。

若 entryNameEncoding 設定為非 null的值,則條目名稱與註解依以下規則解碼:

  • 對於本地檔案標頭通用位元旗標中語言編碼旗標(EFS)未設定的條目,請使用指定的 entryNameEncoding 標示來解碼條目名稱與註解。
  • 對於設定了本地檔案標頭通用位元旗標中語言編碼旗標(EFS)的條目,請使用 UTF-8 (Encoding.UTF8) 來解碼條目名稱並註解。

若 entryNameEncoding 設為 null,則條目名稱與註解依以下規則解碼:

  • 對於本地檔案標頭通用位元旗標中語言編碼旗標(EFS)未設定的條目,請使用目前系統預設代碼頁(Encoding.Default)來解碼條目名稱並註解。
  • 對於設定了本地檔案標頭通用位元旗標中語言編碼旗標(EFS)的條目,請使用 UTF-8 (Encoding.UTF8) 來解碼條目名稱並註解。

除了 UTF-8 以外的 Unicode 編碼無法用於 entryNameEncoding,否則會拋出 an ArgumentException 。

警告

此方法不限制未壓縮總大小或從壓縮檔中提取的條目數量。 處理來自不受信任來源的壓縮檔時,手動遍 ZipArchive歷條目,並驗證未壓縮的總大小與條目數量是否在你情境下的可接受範圍內。

適用於

ExtractToDirectoryAsync(String, String, ZipExtractionOptions, CancellationToken)

來源:
ZipFile.Extract.Async.cs
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(string sourceArchiveFileName, string destinationDirectoryName, System.IO.Compression.ZipExtractionOptions options, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : string * string * System.IO.Compression.ZipExtractionOptions * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (sourceArchiveFileName As String, destinationDirectoryName As String, options As ZipExtractionOptions, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

sourceArchiveFileName
String
destinationDirectoryName
String
cancellationToken
CancellationToken

傳回

適用於

ExtractToDirectoryAsync(String, String, Boolean, CancellationToken)

來源:
ZipFile.Extract.Async.cs
來源:
ZipFile.Extract.Async.cs

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

public static System.Threading.Tasks.Task ExtractToDirectoryAsync(string sourceArchiveFileName, string destinationDirectoryName, bool overwriteFiles, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : string * string * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (sourceArchiveFileName As String, destinationDirectoryName As String, overwriteFiles As Boolean, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

sourceArchiveFileName
String

要解壓的檔案系統中通往檔案庫的路徑。

destinationDirectoryName
String

指向存放擷取檔案的目錄路徑,指定為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。

overwriteFiles
Boolean

true 覆寫檔案; false 否則,

cancellationToken
CancellationToken

取消令牌用來監控取消申請。

傳回

例外狀況

sourceArchiveFileName 或 destinationDirectoryName 為零長度字串、僅含空白,或包含一個或多個無效字元,依 InvalidPathChars 定義。

sourceArchiveFileName 或 destinationDirectoryName 為 null。

sourceArchiveFileName 或 destinationDirectoryName 指定超過系統定義最大長度的路徑、檔名或兩者。 例如,在基於 Windows 的平台上,路徑必須少於 248 個字元,檔案名稱必須少於 260 個字元。

由 sourceArchiveFileName 或 destinationDirectoryName 指定的路徑是無效的(例如,它位於未映射的硬碟上)。

發生了 I/O 錯誤。

-或-

歸檔項目名稱為零長度,僅包含空白,或包含一個或多個無效字元,依 InvalidPathChars 定義。

-或-

解壓壓縮壓縮檔項目會導致檔案目的地位於目的地目錄之外(例如,因為父目錄存取器)。

-或-

一個檔案庫的條目名稱與已從同一檔案庫提取的條目相同。

來電者沒有所需的權限。

sourceArchiveFileName 或 destinationDirectoryName 格式無效。

sourceArchiveFileName 未被找到。

sourceArchiveFileName 這不是有效的 ZipArchive。

-或-

未找到檔案記錄或已損壞。

-或-

壓縮檔條目被壓縮為不支援的壓縮方式。

非同步操作被取消。

備註

指定的目錄不存在。 此方法建立所有子目錄及指定的目錄。

若解壓時發生錯誤,該壓縮檔仍保持部分解壓狀態。 每個項目的解壓方式使得擷取後的檔案與該條目到壓縮檔的路徑 destinationDirectoryName 相符。 路徑接受相對或絕對路徑資訊;相對路徑則被解讀為相對於目前工作目錄的相對於。

若要歸檔的檔案最後修改時間無效,則會使用壓縮時間戳格式中第一個可表示的日期與時間(1980年1月1日午夜)。

警告

此方法不限制未壓縮總大小或從壓縮檔中提取的條目數量。 處理來自不受信任來源的壓縮檔時,手動遍 ZipArchive歷條目,並驗證未壓縮的總大小與條目數量是否在你情境下的可接受範圍內。

適用於

ExtractToDirectoryAsync(Stream, String, ZipExtractionOptions, CancellationToken)

來源:
ZipFile.Extract.Async.cs
public static System.Threading.Tasks.Task ExtractToDirectoryAsync(System.IO.Stream source, string destinationDirectoryName, System.IO.Compression.ZipExtractionOptions options, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : System.IO.Stream * string * System.IO.Compression.ZipExtractionOptions * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (source As Stream, destinationDirectoryName As String, options As ZipExtractionOptions, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

source
Stream
destinationDirectoryName
String
cancellationToken
CancellationToken

傳回

適用於

ExtractToDirectoryAsync(Stream, String, Boolean, CancellationToken)

來源:
ZipFile.Extract.Async.cs
來源:
ZipFile.Extract.Async.cs

非同步解壓指定串流中儲存的所有壓縮壓縮檔,並將其置於檔案系統指定的目的地目錄中,並可選擇是否覆蓋目的地目錄中的檔案。

public static System.Threading.Tasks.Task ExtractToDirectoryAsync(System.IO.Stream source, string destinationDirectoryName, bool overwriteFiles, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : System.IO.Stream * string * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (source As Stream, destinationDirectoryName As String, overwriteFiles As Boolean, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

source
Stream

壓縮檔要從中解壓的串流。

destinationDirectoryName
String

指向存放擷取檔案的目錄路徑,指定為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。

overwriteFiles
Boolean

true 覆寫檔案; false 否則,

cancellationToken
CancellationToken

取消令牌用來監控取消申請。

傳回

例外狀況

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

destinationDirectoryName 或 source 為 null。

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

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

檔案中條目的名稱為 Empty,僅包含空白,或至少包含一個無效字元。

-或-

解壓壓縮檔條目會產生一個位於由 destinationDirectoryName所指定的目錄之外的檔案。 (例如,如果條目名稱包含父目錄存取者,可能會發生這種情況。)

-或-

overwriteFiles 且 false 要擷取的檔案項目名稱與已擷取或存在於 destinationDirectoryName中的項目相同。

呼叫者沒有存取歸檔或目的目錄所需的權限。

destinationDirectoryName 包含無效格式。

串流中包含的 source 壓縮檔並非有效的壓縮壓縮檔。

-或-

未找到檔案記錄或已損壞。

-或-

壓縮檔條目是用不支援的壓縮方法壓縮的。

非同步操作被取消。

備註

此方法建立指定的目錄及所有子目錄。 目的地目錄不可能已經存在。 與驗證參數中 destinationDirectoryName zip 壓縮檔中路徑驗證的source例外會在解壓前拋出。 否則,若在解壓過程中發生錯誤,該壓縮檔仍維持部分解壓狀態。 每個解壓檔案對指定的 destinationDirectoryName 目錄的相對路徑,與其來源條目到壓縮檔根節點的路徑相同。

若要歸檔的檔案最後修改時間無效,則會使用壓縮時間戳格式中第一個可表示的日期與時間(1980年1月1日午夜)。

警告

此方法不限制未壓縮總大小或從壓縮檔中提取的條目數量。 處理來自不受信任來源的壓縮檔時,手動遍 ZipArchive歷條目,並驗證未壓縮的總大小與條目數量是否在你情境下的可接受範圍內。

適用於

ExtractToDirectoryAsync(String, String, CancellationToken)

來源:
ZipFile.Extract.Async.cs
來源:
ZipFile.Extract.Async.cs

非同步解壓指定壓縮檔中的所有檔案到檔案系統上的目錄。

public static System.Threading.Tasks.Task ExtractToDirectoryAsync(string sourceArchiveFileName, string destinationDirectoryName, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : string * string * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (sourceArchiveFileName As String, destinationDirectoryName As String, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

sourceArchiveFileName
String

要解壓的檔案系統中通往檔案庫的路徑。

destinationDirectoryName
String

指向存放擷取檔案的目錄路徑,指定為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。

cancellationToken
CancellationToken

取消令牌用來監控取消申請。

傳回

例外狀況

sourceArchiveFileName 或 destinationDirectoryName 為零長度字串、僅含空白,或包含一個或多個無效字元,依 InvalidPathChars 定義。

sourceArchiveFileName 或 destinationDirectoryName 為 null。

sourceArchiveFileName 或 destinationDirectoryName 指定超過系統定義最大長度的路徑、檔名或兩者。 例如,在基於 Windows 的平台上,路徑必須少於 248 個字元,檔案名稱必須少於 260 個字元。

由 sourceArchiveFileName 或 destinationDirectoryName 指定的路徑是無效的(例如,它位於未映射的硬碟上)。

發生了 I/O 錯誤。

-或-

歸檔項目名稱為零長度,僅包含空白,或包含一個或多個無效字元,依 InvalidPathChars 定義。

-或-

解壓壓縮壓縮檔項目會導致檔案目的地位於目的地目錄之外(例如,因為父目錄存取器)。

-或-

一個檔案庫的條目名稱與已從同一檔案庫提取的條目相同。

來電者沒有所需的權限。

sourceArchiveFileName 或 destinationDirectoryName 格式無效。

sourceArchiveFileName 未被找到。

所 sourceArchiveFileName 指定的壓縮檔並非有效的 ZipArchive。

-或-

未找到檔案記錄或已損壞。

-或-

壓縮檔條目被壓縮為不支援的壓縮方式。

非同步操作被取消。

備註

指定的目錄不存在。 此方法建立所有子目錄及指定的目錄。

若解壓時發生錯誤,該壓縮檔仍保持部分解壓狀態。 每個項目的解壓方式使得擷取後的檔案與該條目到壓縮檔的路徑 destinationDirectoryName 相符。 路徑接受相對或絕對路徑資訊;相對路徑則被解讀為相對於目前工作目錄的相對於。

若要歸檔的檔案最後修改時間無效,則會使用壓縮時間戳格式中第一個可表示的日期與時間(1980年1月1日午夜)。

警告

此方法不限制未壓縮總大小或從壓縮檔中提取的條目數量。 處理來自不受信任來源的壓縮檔時,手動遍 ZipArchive歷條目,並驗證未壓縮的總大小與條目數量是否在你情境下的可接受範圍內。

適用於

ExtractToDirectoryAsync(Stream, String, CancellationToken)

來源:
ZipFile.Extract.Async.cs
來源:
ZipFile.Extract.Async.cs

非同步解壓所有儲存在指定串流中的壓縮壓縮檔,並將其置於檔案系統指定的目的地目錄中。

public static System.Threading.Tasks.Task ExtractToDirectoryAsync(System.IO.Stream source, string destinationDirectoryName, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : System.IO.Stream * string * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (source As Stream, destinationDirectoryName As String, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

source
Stream

壓縮檔要從中解壓的串流。

destinationDirectoryName
String

指向存放擷取檔案的目錄路徑,指定為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。

cancellationToken
CancellationToken

取消令牌用來監控取消申請。

傳回

例外狀況

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

destinationDirectoryName 或 source 為 null。

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

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

檔案中條目的名稱為 Empty,僅包含空白,或至少包含一個無效字元。

-或-

解壓壓縮檔條目會產生一個位於由 destinationDirectoryName所指定的目錄之外的檔案。 (例如,如果條目名稱包含父目錄存取者,可能會發生這種情況。)

-或-

要提取的壓縮檔條目名稱與已解壓或存在於 destinationDirectoryName中的條目相同。

呼叫者沒有存取歸檔或目的目錄所需的權限。

destinationDirectoryName 包含無效格式。

串流中包含的 source 壓縮檔並非有效的壓縮壓縮檔。

-或-

未找到檔案記錄或已損壞。

-或-

壓縮檔條目是用不支援的壓縮方法壓縮的。

非同步操作被取消。

備註

此方法建立指定的目錄及所有子目錄。 目的地目錄不可能已經存在。 與驗證參數中 destinationDirectoryName zip 壓縮檔中路徑驗證的source例外會在解壓前拋出。 否則,若在解壓過程中發生錯誤,該壓縮檔仍維持部分解壓狀態。 每個解壓檔案對指定的 destinationDirectoryName 目錄的相對路徑,與其來源條目到壓縮檔根節點的路徑相同。

若要歸檔的檔案最後修改時間無效,則會使用壓縮時間戳格式中第一個可表示的日期與時間(1980年1月1日午夜)。

警告

此方法不限制未壓縮總大小或從壓縮檔中提取的條目數量。 處理來自不受信任來源的壓縮檔時,手動遍 ZipArchive歷條目,並驗證未壓縮的總大小與條目數量是否在你情境下的可接受範圍內。

適用於

ExtractToDirectoryAsync(Stream, String, Encoding, CancellationToken)

來源:
ZipFile.Extract.Async.cs
來源:
ZipFile.Extract.Async.cs

非同步解壓所有儲存在指定串流中的 zip 壓縮檔,並將其置於檔案系統指定的目的地目錄,並使用指定的字元編碼作為條目名稱。

public static System.Threading.Tasks.Task ExtractToDirectoryAsync(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default);
static member ExtractToDirectoryAsync : System.IO.Stream * string * System.Text.Encoding * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function ExtractToDirectoryAsync (source As Stream, destinationDirectoryName As String, entryNameEncoding As Encoding, Optional cancellationToken As CancellationToken = Nothing) As Task

參數

source
Stream

壓縮檔要從中解壓的串流。

destinationDirectoryName
String

指向存放擷取檔案的目錄路徑,指定為相對路徑或絕對路徑。 相對路徑會被解讀為相對於目前工作目錄的相對於。

entryNameEncoding
Encoding

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

cancellationToken
CancellationToken

取消令牌用來監控取消申請。

傳回

例外狀況

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

-或-

entryNameEncoding 設定為非 UTF-8 的 Unicode 編碼。

destinationDirectoryName 或 source 為 null。

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

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

檔案中條目的名稱為 Empty,僅包含空白,或至少包含一個無效字元。

-或-

解壓壓縮檔條目會產生一個位於由 destinationDirectoryName所指定的目錄之外的檔案。 (例如,如果條目名稱包含父目錄存取者,可能會發生這種情況。)

-或-

要提取的壓縮檔條目名稱與已解壓或存在於 destinationDirectoryName中的條目相同。

呼叫者沒有存取歸檔或目的目錄所需的權限。

destinationDirectoryName 包含無效格式。

串流中包含的 source 壓縮檔並非有效的壓縮壓縮檔。

-或-

未找到檔案記錄或已損壞。

-或-

壓縮檔條目是用不支援的壓縮方法壓縮的。

非同步操作被取消。

備註

此方法建立指定的目錄及所有子目錄。 目的地目錄不可能已經存在。 與驗證參數中 destinationDirectoryName zip 壓縮檔中路徑驗證的source例外會在解壓前拋出。 否則,若在解壓過程中發生錯誤,該壓縮檔仍維持部分解壓狀態。 每個解壓檔案對指定的 destinationDirectoryName 目錄的相對路徑,與其來源條目到壓縮檔根節點的路徑相同。

若要歸檔的檔案最後修改時間無效,則會使用壓縮時間戳格式中第一個可表示的日期與時間(1980年1月1日午夜)。

警告

此方法不限制未壓縮總大小或從壓縮檔中提取的條目數量。 處理來自不受信任來源的壓縮檔時,手動遍 ZipArchive歷條目,並驗證未壓縮的總大小與條目數量是否在你情境下的可接受範圍內。

適用於