使用 IRONZIP

如何使用 C# 壓縮資料夾中的檔案

查克尼思·賓
查克尼思·賓
2024年2月18日
分享:

ZIP 檔案是包含一個或多個使用 ZIP 格式壓縮的檔案或資料夾的檔案。 這是一種常見的方法,用於將多個文件或文件夾壓縮和存檔為單個文件。它們可以減小數據的大小,節省磁碟空間,並使文件在互聯網上傳輸更為方便。 在本文中,您將學習如何使用ZIP檔案在C#中,並使用IronZIP庫。 您將看到如何以程式方式創建、讀取、提取和更新 ZIP 文件,以及如何使用 IronZIP 的各種功能,如加密、密碼保護和壓縮等級。 閱讀本文後,您將能夠輕鬆地在 C# 應用程式中使用 IronZIP 處理 ZIP 檔案。

本篇文章涵蓋的內容

  1. 在我們的專案中安裝 IronZIP

  2. 建立 ZIP 檔案

  3. 建立受密碼保護的ZIP文件

  4. 提取 ZIP 檔案

  5. 提取受密碼保護的 ZIP 文件

  6. 訪問現有的ZIP檔案

什麼是IronZIP?

IronZIP 是一個功能強大且多功能的 C# ZIP 壓縮檔案庫,讓您能夠以程式方式創建、讀取和提取 ZIP 檔案。 它支持多種存檔格式,例如ZIPTARGZIPBZIP2。 它還支持密碼保護、加密和壓縮等級。 IronZIP 兼容 .NET 8、7、6、Core、Standard 和 Framework。

IronZIP 可以幫助您處理使用 ZIP 檔案的各種用例和優點,例如:

  1. 建立備份系統:您可以使用IronZIP壓縮和加密您的重要檔案和資料夾,將它們存儲在ZIP檔案中並保存在安全位置。 這樣,您可以節省磁碟空間並防止資料未經授權的存取。

  2. 發送電子郵件附件:您可以使用IronZIP將電子郵件附件壓縮成ZIP檔案以減小附件的大小。這可以幫助您避免超過文件大小限制並加快傳輸過程。

  3. 從網路下載檔案:您可以使用IronZIP從網路下載及解壓ZIP檔案,例如軟體包、文件、圖像及其他類型的檔案。 這可以幫助您節省頻寬和時間,輕鬆存取所需的檔案。

開始使用 IronZIP

在編寫代碼之前,您需要在 C# 專案中安裝 IronZIP NuGet 套件。 IronZIP 是一款受歡迎的壓縮庫,可通過 NuGet 獲得。

安裝 IronZIP 函式庫

要安裝IronZIP,您可以在Visual Studio中使用NuGet套件管理器主控台。 只需运行以下命令:

Install-Package IronZip

或者,您可以直接從官方IronZIP網站下載套件。 安裝完成後,您可以開始在 C# 代碼的頂部添加以下命名空間。

using IronZip;
using IronZip;
Imports IronZip
$vbLabelText   $csharpLabel

在資料夾文件中建立 C# ZIP 檔案

我們可以使用 IronZIP 輕鬆在資料夾中建立 ZIP 檔案。以下程式碼將壓縮指定目錄中的所有檔案。

static void Main(string [] args)
{
    string [] fileArray = Directory.GetFiles(@"D:\Docs\");
    using (var archive = new IronZipArchive())
    {
        foreach (var file in fileArray)
        {
            // Add files to the ZIP
            archive.Add(file);
        }
        // Export the ZIP
        archive.SaveAs("myZipFile.zip");
    }
}
static void Main(string [] args)
{
    string [] fileArray = Directory.GetFiles(@"D:\Docs\");
    using (var archive = new IronZipArchive())
    {
        foreach (var file in fileArray)
        {
            // Add files to the ZIP
            archive.Add(file);
        }
        // Export the ZIP
        archive.SaveAs("myZipFile.zip");
    }
}
Shared Sub Main(ByVal args() As String)
	Dim fileArray() As String = Directory.GetFiles("D:\Docs\")
	Using archive = New IronZipArchive()
		For Each file In fileArray
			' Add files to the ZIP
			archive.Add(file)
		Next file
		' Export the ZIP
		archive.SaveAs("myZipFile.zip")
	End Using
End Sub
$vbLabelText   $csharpLabel

上面的 C# 代碼使用 IronZIP 函式庫將所有文件壓縮成一個 ZIP 文件。該代碼執行以下操作:

  • 我們已經宣告了一個名為 fileArray 的字串陣列,並將 Directory.GetFiles 方法的結果賦值給它,將目錄的路徑 ("D:\Docs") 作為參數傳遞。 此方法返回一個包含指定目錄中所有文件全名的字串數組。
  • 我們創建了一個新的 IronZipArchive 類實例,這是記憶體中的 ZIP 存檔。 該實例被賦值給一個名為 archive 的變量並用 using 語句包裹,以確保當代碼塊結束時,ZIP 壓縮包被釋放。
  • 然後,我們使用 foreach 迴圈遍歷了 fileArray 陣列,對於每個檔案,它會調用 archive 物件的 Add 方法,並將檔案名稱作為參數傳遞。 此方法將具有相同名稱和內容的新條目添加到 ZIP 壓縮檔案中。
  • 最後,我們調用了存檔對象的 SaveAs 方法,將 ZIP 文件的名稱(“myZipFile.zip”)作為參數傳遞。 此方法將 ZIP 壓縮檔儲存到當前檔案系統中的檔案。

    透過這種方式,我們可以僅用幾行程式碼輕鬆建立新的壓縮檔案。

輸出

輸出為:

如何使用 C# 壓縮資料夾中的檔案:圖 1 - 先前程式碼範例的輸出檔案

建立受密碼保護的ZIP文件

IronZIP 提供了最簡單的方法來創建加密保護的 ZIP 文件。 以下的程式碼範例將壓縮檔案並創建一個新的具有密碼的 ZIP 檔案。

using (var archive = new IronZipArchive())
 {
     foreach (var file in fileArray)
     {
         // Add files to the ZIP
         archive.Add(file);
     }
    // Set Password and Encryption Method
     archive.Encrypt("myPa55word", EncryptionMethods.AES256);
     // Export the ZIP
     archive.SaveAs("myZipFile.zip");
 }
using (var archive = new IronZipArchive())
 {
     foreach (var file in fileArray)
     {
         // Add files to the ZIP
         archive.Add(file);
     }
    // Set Password and Encryption Method
     archive.Encrypt("myPa55word", EncryptionMethods.AES256);
     // Export the ZIP
     archive.SaveAs("myZipFile.zip");
 }
Using archive = New IronZipArchive()
	 For Each file In fileArray
		 ' Add files to the ZIP
		 archive.Add(file)
	 Next file
	' Set Password and Encryption Method
	 archive.Encrypt("myPa55word", EncryptionMethods.AES256)
	 ' Export the ZIP
	 archive.SaveAs("myZipFile.zip")
End Using
$vbLabelText   $csharpLabel

archive.Encrypt("myPa55word", EncryptionMethods.AES256); 使用 IronZIP 為 ZIP 壓縮檔設定密碼("myPa55word")。此過程通過對壓縮檔應用 AES-256 加密來增強安全性,確保只有擁有正確密碼的使用者才能存取其內容。 此功能對於在 C# 應用程式中的儲存或傳輸期間保護敏感數據非常有價值。 我們需要在第二個參數中傳遞指定的加密算法模式。

如下面所示,文件已加密。

輸出

如何使用 C# 壓縮資料夾中的文件:圖 2 - 從前面範例代碼輸出的加密文件

我們已經看到透過迴圈遍歷指定路徑的目錄來創建 ZIP 檔的演示。 現在,讓我們來看看解壓縮檔案的範例。

從 ZIP 壓縮檔提取檔案

IronZIP 提供了一種方法,從 ZIP 檔案中提取檔案 C#。 以下代碼範例將從 ZIP 壓縮檔案中提取壓縮文件。

IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles")
$vbLabelText   $csharpLabel

IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles"); 使用IronZIP提取"myZipFile.zip"中的所有文件,並將它們放置在"myExtractedFiles"目錄中。 這個精簡的方法簡化了在 C# 中提取 ZIP 壓縮檔案的過程,為檔案提取任務提供了一個便利的解決方案。

輸出

輸出如下:

如何使用 C# 壓縮資料夾中的檔案:圖 3 - 先前程式碼範例生成的檔案

如何從受密碼保護的 ZIP 檔案中提取

IronZIP 也提供提取受密码保护的 ZIP 文件的方法。 以下程式碼將使用IronZIP方法從指定的ZIP檔案中提取所有現有的檔案和目錄。

IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word")
$vbLabelText   $csharpLabel

IronZipArchive 類別的 ExtractArchiveToDirectory 方法將 ZIP 壓縮檔案中的所有條目提取到指定的目錄。 它向方法傳遞了三個參數:ZIP 文件的路徑(“myZipFile.zip”)、目標目錄的路徑(“myExtractedFiles”)以及 ZIP 文件的密碼(“myPa55word”)。

這樣,我們可以輕鬆提取受密碼保護的 zip 檔案。

如何存取現有的存檔

IronZIP 提供方法來存取現有的壓縮包並檢視檔案中的所有項目。

using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
{
    // Get Entries list
    List<string> names = archive.GetArchiveEntryNames();
    foreach (string name in names)
    {
        Console.WriteLine(name);
    }
}
using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
{
    // Get Entries list
    List<string> names = archive.GetArchiveEntryNames();
    foreach (string name in names)
    {
        Console.WriteLine(name);
    }
}
Using archive = New IronZipArchive("myZipFile.zip", "myPa55word")
	' Get Entries list
	Dim names As List(Of String) = archive.GetArchiveEntryNames()
	For Each name As String In names
		Console.WriteLine(name)
	Next name
End Using
$vbLabelText   $csharpLabel

提供的 C# 程式碼使用 IronZIP 來建立一個安全的 IronZipArchive 實例,透過載入名稱為 "myZipFile.zip" 的 ZIP 檔案並使用密碼 "myPa55word"。 如果文件未加密,請不要傳遞密碼參數。 然後,它會檢索並打印加密 ZIP 壓縮檔案中的條目名稱(檔案和文件夾名稱)列表。

GetArchiveEntryNames 方法收集條目名稱,然後透過 for-each 迴圈將每個名稱輸出到控制台。 這說明了如何使用IronZIP以簡明的方式從受密碼保護的zip壓縮檔中安全存取和檢索進入信息。

輸出

使用 C# 將資料夾中的檔案壓縮:圖 4 - 上一個程式碼範例的輸出

結論

總之,IronZIP 是一個強大且多用途的 C# 庫,用於處理 ZIP 文件。 其功能不僅限於基本的壓縮解壓縮,還提供如密碼保護、加密以及與多種壓縮檔格式的兼容性等功能。 無論您是要建立備份系統、管理電子郵件附件,還是從網路下載檔案,IronZIP 都能以簡單且高效的方式簡化這些任務。

通過將IronZIP整合到您的C#應用程序中,您將獲得一個強大的工具,用於處理ZIP文件、增強數據安全性以及優化文件傳輸過程。 您可以根據需要享受免費的試用

查克尼思·賓
軟體工程師
Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。
< 上一頁
如何在 C# 中將 Zip 壓縮檔案解壓縮到目錄
下一個 >
如何在 VB .NET 中解壓縮 Zip 文件

準備開始了嗎? 版本: 2025.4 剛剛發布

查看許可證 >