摘要:在开发中,处理压缩文件是一个常见的需求。无论是从互联网下载资源、备份数据,还是打包应用程序的输出,压缩和解压功能都扮演着重要的角色。
在开发中,处理压缩文件是一个常见的需求。无论是从互联网下载资源、备份数据,还是打包应用程序的输出,压缩和解压功能都扮演着重要的角色。
1. 简介SharpCompress是一个由 Adam Hathcock 维护的开源 C# 库,提供对多种压缩格式的读写支持。它完全使用 C# 编写,兼容现代 .NET 平台(包括 .NET Standard、.NET Core 和 .NET 5+),适用于 Windows、Linux 和 macOS 系统。
项目地址:https://github.com/adamhathcock/sharpcompress
与其他压缩库相比,SharpCompress 的最大特点是其 广泛支持多种压缩格式,并且可以轻松集成到项目中。此外,它还支持流式处理,适用于大文件或网络传输场景。
2. 支持的压缩格式SharpCompress 支持以下常见的压缩与归档格式:
• ZIP
• RAR(含 RAR5)
• 7Zip
• TAR
• GZip
• BZip2
• LZip
• XZ
• ZIP
• TAR
• GZip
• BZip2
• LZip
对于需要长期归档和流式处理的场景,推荐使用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 加密支持using (var archive = ArchiveFactory.Open("encrypted.zip", new ReaderOptions { Password = "password" }))
{
// 解压逻辑
}5.3 自定义提取选项ExtractionOptions,你可以控制是否覆盖现有文件、是否提取完整路径等。
来源:opendotnet
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!