跳過到頁腳內容
與其他組件的比較

IronXL 使用 C# 開發人員的 Zip 壓縮教程

ZipArchive 的介紹

每當您想到以壓縮格式傳送文件時,通常會首先想到 Zip 歸檔。Zip 歸檔是一種流行的壓縮和打包單個文件或整個集合到一個歸檔中的格式。然而,當有大量文件需要壓縮時,處理它們可能會變得令人沮喪,因為您必須一個個地歸檔和格式化它們。 但不必如此。 大容量任務需要通過編程自動化來完成。 我們可以使用 IronZip,一個簡單而直觀的庫,來實現這一切和更多。

在本文中,我們將簡要討論 IronZip 的核心功能和特性,以及它如何幫助您更好地自動化工作流程,提高效率,並消除易錯的人工任務。

從文件夾或文件創建新的 Zip 文件

以下是一個示例,將多個文件壓縮到一個歸檔中,並在操作後導出它們。 本文中的所有示例都包裹在 static void Main() 方法中,以避免重複代碼塊。

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Create an empty ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Add files to the ZIP archive
            archive.Add("./assets/image1.jpg");
            archive.Add("./assets/image2.jpg");
            archive.Add("./assets/image3.jpg");

            // Export the ZIP archive to a file
            archive.SaveAs("output.zip");
        }
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Create an empty ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Add files to the ZIP archive
            archive.Add("./assets/image1.jpg");
            archive.Add("./assets/image2.jpg");
            archive.Add("./assets/image3.jpg");

            // Export the ZIP archive to a file
            archive.SaveAs("output.zip");
        }
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create an empty ZIP archive
		Using archive = New IronZipArchive()
			' Add files to the ZIP archive
			archive.Add("./assets/image1.jpg")
			archive.Add("./assets/image2.jpg")
			archive.Add("./assets/image3.jpg")

			' Export the ZIP archive to a file
			archive.SaveAs("output.zip")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. 我們首先導入 IronZip。
  2. 然後,使用 IronZip,我們創建一個歸檔。
  3. 我們調用 archive.Add() 將多個文件添加到歸檔中。請記住,路徑名稱必須是絕對路徑,否則操作將無法找到相應的文件。
  4. 最後,我們調用 archive.SaveAs() 將 Zip 歸檔導出為 output.zip

使用新文件或更改更新現有 Zip 文件

讓我們來看看另一個示例; 這次,我們將用新文件編輯現有的 Zip 歸檔,以展示 IronZip 的功能。

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Open an existing ZIP archive
        using (var archive = IronZipArchive.FromFile("existing.zip"))
        {
            // Add additional files to the existing ZIP archive
            archive.Add("./assets/image3.png");
            archive.Add("./assets/image4.png");

            // Export the updated ZIP archive to a new file
            archive.SaveAs("result.zip");
        }
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Open an existing ZIP archive
        using (var archive = IronZipArchive.FromFile("existing.zip"))
        {
            // Add additional files to the existing ZIP archive
            archive.Add("./assets/image3.png");
            archive.Add("./assets/image4.png");

            // Export the updated ZIP archive to a new file
            archive.SaveAs("result.zip");
        }
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Open an existing ZIP archive
		Using archive = IronZipArchive.FromFile("existing.zip")
			' Add additional files to the existing ZIP archive
			archive.Add("./assets/image3.png")
			archive.Add("./assets/image4.png")

			' Export the updated ZIP archive to a new file
			archive.SaveAs("result.zip")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. 我們首先導入 IronZip。
  2. 使用 IronZip,我們創建一個歸檔,但這次我們使用 IronZipArchive.FromFile() 導入現有的 Zip 文件。
  3. 我們調用 archive.Add() 將所需文件添加到歸檔中。請記住,路徑名稱必須是絕對路徑,否則操作將無法找到現有文件。
  4. 最後,我們調用 archive.SaveAs() 將更新的 Zip 歸檔導出為 result.zip

如您所見,上述代碼中的操作和格式類似於用來創建和添加文件到 Zip 文件。主要區別在於我們導入 Zip 文件,以展示 IronZip 的簡單而直觀的功能。

從 Zip 歸檔中提取文件

我們還可以使用 IronZip 從 Zip 歸檔或 Zip 封裝中提取文件。 讓我們在另一個示例中查看這個。

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted");
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Extract the ZIP archive content to a specified directory
		IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted")
	End Sub
End Class
$vbLabelText   $csharpLabel

我們導入 IronZip 並呼叫 IronZipArchive.ExtractArchiveToDirectory()。 此方法將現有 Zip 歸檔的內容提取到指定的目標目錄。

此外,在需要處理受密碼保護的 Zip 歸檔的情況下,我們可以使用另一種方法來提取歸檔。

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the protected ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted", "P@ssw0rd");
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the protected ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted", "P@ssw0rd");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Extract the protected ZIP archive content to a specified directory
		IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted", "P@ssw0rd")
	End Sub
End Class
$vbLabelText   $csharpLabel

最終,我們傳入另一個參數:受保護的 Zip 歸檔的密碼。操作的其餘部分與上述顯示相同。

進階主題及最佳實踐

上面討論的添加、提取和創建歸檔的代碼示例是處理 Zip 歸檔時最常見的方法。 然而,為更高級的使用,如提取其他格式或僅查看歸檔的內容,IronZIP 能夠支持並提供更多功能。

IronZIP 的進階功能

  • 跨平台兼容性:IronZIP 與多個 .NET 版本兼容,包括 .NET Core (3.1+)、Standard (2.0+) 和 .NET Framework (4.6.2+)。 該庫還能在 Web (Blazor)、移動 (MAUI)、桌面 (WPF) 和控制台中運行。 這使得開發者能夠超越平台和版本的限制。

  • 生成歸檔:除了 ZIP 格式之外,IronZIP 還支持創建 TAR、GZIP 和 BZIP2 歸檔。

  • 提取歸檔:使用 IronZIP,僅需一段代碼即可輕鬆提取歸檔並解壓文件,如上所示。

  • 添加文件和文件系統:IronZIP 支持通過添加圖像、文本文件和文件(如 PDF、DOCX 和 XLSX),以及如 MP3 和 WAV 等音頻文件來操作 Zip 歸檔。它甚至可以將整個文件系統或單個文本文件壓縮為 ZipArchive 歸檔

  • 導出和創建:您可以使用 AES128 和 AES256 標準保護歸檔文件。 此外,您還可以生成和導出如 TAR、GZIP 和 BZIP2 的格式。

  • 自定義壓縮級別:IronZIP 允許開發者調整壓縮設置,以微調算法以滿足他們的需求。

  • 編輯歸檔:使用 IronZIP 作為編輯相關操作的全面解決方案,易於添加、提取或刪除歸檔中的文件條目。

  • 文件條目屬性:IronZIP 提供了設置可選歸檔註釋和在不提取情況下檢索歸檔中文件名的能力,有助於為每個文件留下特定的註釋。

  • 授權選擇:IronZIP 提供靈活的授權選擇,包括免費試用版本,允許開發者選擇最適合他們需求的版本。

總結

處理壓縮文件和歸檔是開發者經常面臨的日常任務,但管理大量此類文件可能會讓人感到壓力並容易出錯。 儘管有像 System.IO.Compression 這樣的選擇,但使用 IronZIP 可以在處理壓縮歸檔時實現更多功能並快速解決問題。 在本文中,我們討論了 IronZIP 的進階功能和常見操作,如創建 Zip 歸檔、刪除條目或添加文件。 了解如何使用 IronZIP 以編程方式執行這些任務有助於提高處理歸檔的效率、可擴展性和自動化水平。

請注意System.IO.Compression 是其各自所有者的註冊商標。 本網站未經 System.IO.Compression 認可、贊助或支持。 所有產品名稱、商標和品牌均為其各自所有者的財產。 比較僅供參考,並反映撰寫時的公開可用信息。

常見問題解答

如何在 C# 中從文件夾創建 ZIP 文件?

要在 C# 中從文件夾創建 ZIP 文件,你可以使用 IronZip 庫。首先,導入 IronZip 庫,創建一個 IronZipArchive 實例,使用 archive.AddFolder() 添加文件夾,然後用 archive.SaveAs() 保存。

從 C# 中的 ZIP 存檔中提取數據的流程是什麼?

在 C# 中,你可以使用 IronZip 通過調用 IronZipArchive.ExtractArchiveToDirectory() 方法從 ZIP 存檔中提取數據。此方法允許你指定提取內容的目錄。

如何在 C# 中以程式的方式更新 ZIP 存檔的內容?

要在 C# 中以程式的方式更新 ZIP 存檔的內容,使用 IronZip 通過 IronZipArchive.FromFile() 加載現有的存檔,然後使用 archive.Add() 添加文件或 archive.Remove() 刪除文件,之後用 archive.SaveAs() 保存更改。

IronZip 支持處理密碼保護的 ZIP 文件嗎?

是的,IronZip 可以處理密碼保護的 ZIP 文件。你可以在使用 IronZipArchive.ExtractArchiveToDirectory() 方法提取文件時指定一個密碼,通過提供密碼作為一個額外參數。

使用 IronZip 處理 ZIP 文件相較於 System.IO.Compression 有哪些優勢?

IronZip 提供了比 System.IO.Compression 更先進的功能,例如支持多種存檔格式,密碼保護,自定義壓縮級別,以及無需提取文件即可編輯存檔的能力。

IronZip 怎樣確保與不同 .NET 版本的跨平台兼容性?

IronZip 通過支持多個 .NET 版本確保跨平台兼容性,讓開發者可以將 ZIP 文件處理功能集成到運行在各種平台和框架的應用程序中。

IronZip 提供了哪些處理 ZIP 存檔的先進功能?

IronZip 提供了先進的功能,如生成和提取多種存檔格式(ZIP、TAR、GZIP、BZIP2),密碼保護,自定義壓縮級別,以及無需提取文件的綜合編輯能力。

是否可以使用 IronZip 管理 ZIP 存檔中的文件屬性?

是的,IronZip 允許你管理 ZIP 存檔中的文件屬性,例如評論,無需先提取文件,增強了存檔管理的靈活性和效率。

如何在 C# 中自動化 ZIP 文件的創建和提取?

你可以在 C# 中使用 IronZip 在 static void Main() 方法中自動化 ZIP 文件的創建和提取。這允許你自動化過程,如添加文件到存檔、提取數據和編程地更新現有存檔。

IronZip 支持整個文件系統的處理嗎?

是的,IronZip 支持整個文件系統的壓縮和提取,這使其能夠有效地處理大數據量。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。