在開發中,處理壓縮文件是一個常見的需求。無論是從互聯網下載資源、備份數據,還是打包應用程序的輸出,壓縮和解壓功能都扮演著重要的角色。
1. 簡介
SharpCompress 是一個由 Adam Hathcock 維護的開源 C# 庫,提供對多種壓縮格式的讀寫支持。它完全使用 C# 編寫,兼容現代 .NET 平臺(包括 .NET Standard、.NET Core 和 .NET 5+),適用于 Windows、Linux 和 macOS 系統。
項目地址:https://github.com/adamhathcock/sharpcompress?
與其他壓縮庫相比,SharpCompress 的最大特點是其 廣泛支持多種壓縮格式,并且可以輕松集成到項目中。此外,它還支持流式處理,適用于大文件或網絡傳輸場景。
2. 支持的壓縮格式
SharpCompress 支持以下常見的壓縮與歸檔格式:
支持以下格式的 寫入:
對于需要長期歸檔和流式處理的場景,推薦使用 GZip
、BZip2
或 LZip
,因其格式簡潔且易于流式解析。
3. 安裝與引入
通過 NuGet 包管理器安裝
Install-Package SharpCompress
引用命名空間即可開始使用
using SharpCompress.Archives;
using SharpCompress.Common;
using System.IO;
4. 基本用法
4.1 解壓 ZIP 文件
一個簡單的 ZIP 文件解壓示例
using (var archive = ArchiveFactory.Open("example.zip"))
{
foreach (var entry in archive.Entries)
{
if (!entry.IsDirectory)
{
entry.WriteToDirectory("output_directory", new ExtractionOptions()
{
ExtractFullPath = true,
Overwrite = true
});
}
}
}
4.2 創建 ZIP 文件
創建 ZIP 文件
using (var archive = ArchiveFactory.CreateWritableArchive(ArchiveType.Zip, File.Create("new_archive.zip")))
{
archive.AddAllFromDirectory("source_directory");
}
4.3 處理 RAR 文件(僅限讀取)
由于 RAR 格式是專有格式,SharpCompress 只支持讀取 RAR 文件:
using (var archive = ArchiveFactory.Open("example.rar"))
{
foreach (var entry in archive.Entries)
{
if (!entry.IsDirectory)
{
entry.WriteToDirectory("output_directory", new ExtractionOptions()
{
ExtractFullPath = true,
Overwrite = true
});
}
}
}
5. 高級特性
5.1 流式處理
SharpCompress 支持從 Stream
中讀取和寫入壓縮文件,這使得它可以用于網絡請求、內存操作等場景
using (var stream = new FileStream("example.zip", FileMode.Open))
using (var archive = ArchiveFactory.Open(stream))
{
// 處理解壓邏輯
}
5.2 加密支持
某些壓縮格式(如 ZIP)支持加密壓縮包。SharpCompress 允許你在打開加密壓縮包時提供密碼
using (var archive = ArchiveFactory.Open("encrypted.zip", new ReaderOptions { Password = "password" }))
{
// 解壓邏輯
}
5.3 自定義提取選項
通過 ExtractionOptions
,你可以控制是否覆蓋現有文件、是否提取完整路徑等。
該文章在 2025/6/3 15:22:59 編輯過