跳至頁尾內容
與其他組件的比較

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. 最後,我們調用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. 最後,我們調用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+)。 該程式庫還可在網頁 (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比System.IO.Compression在ZIP文件處理上有哪些好處?

IronZip提供了比System.IO.Compression更高級的功能,如支持多種存檔格式、密碼保護、自定壓縮等級,以及新增或刪除文件而不提取存檔即可進行編輯。

IronZip如何確保與不同.NET版本的跨平臺相容性?

IronZip確保跨平臺相容性,支持多個.NET版本,讓開發者能夠將ZIP文件處理功能整合到運行於不同平臺和框架的應用程式中。

IronZip處理ZIP存檔提供了哪些高級功能?

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

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

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

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

您可以使用IronZip在static void Main()方法中自動化ZIP文件的建立和提取。這使您可以程式化地自動化過程,如向存檔新增文件、提取資料及更新現有存檔。

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

是的,IronZip支持整個文件系統的壓縮和提取,適合有效處理大容量資料。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話