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

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");
        }
    }
}
$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");
        }
    }
}
$vbLabelText   $csharpLabel
  1. 我們先導入IronZIP。
  2. 使用IronZIP,我們建立一個歸檔文件,但這次,我們導入現有的 zip 文件,其中包含 IronZipArchive.FromFile()
  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");
    }
}
$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");
    }
}
$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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

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