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
- 我們先導入 IronZip。
- 然後,我們使用 IronZip 建立一個歸檔檔案。
- 我們呼叫
archive.Add()來在歸檔檔案中新增多個檔案。請記住,路徑名必須是絕對路徑,否則操作將無法找到對應的檔案。 - 最後,我們呼叫
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
- 我們先導入 IronZip。
- 使用 IronZip,我們建立一個歸檔文件,但這次,我們導入現有的 zip 文件,文件名稱為
IronZipArchive.FromFile()。 - 我們呼叫
archive.Add()來將所需檔案新增至歸檔檔案。請記住,路徑名必須是絕對路徑,否則操作將無法找到現有檔案。 - 最後,我們呼叫
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
我們導入 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
最後,我們傳入另一個參數:受保護的 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 以程式設計方式執行這些任務,可以提高處理歸檔檔案的效率、可擴充性和自動化程度。
常見問題解答
如何在 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 支持整個文件系統的壓縮和提取,這使其能夠有效地處理大數據量。


