首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SharpCompress:跨平台的 C# 压缩与解压库

SharpCompress:跨平台的 C# 压缩与解压库

作者头像
郑子铭
发布2025-07-03 14:35:53
发布2025-07-03 14:35:53
17100
代码可运行
举报
运行总次数:0
代码可运行

在开发中,处理压缩文件是一个常见的需求。无论是从互联网下载资源、备份数据,还是打包应用程序的输出,压缩和解压功能都扮演着重要的角色。

C#压缩解压文件处理方案

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

对于需要长期归档和流式处理的场景,推荐使用 GZipBZip2LZip,因其格式简洁且易于流式解析。


3. 安装与引入

通过 NuGet 包管理器安装

代码语言:javascript
代码运行次数:0
运行
复制
Install-Package SharpCompress

引用命名空间即可开始使用

代码语言:javascript
代码运行次数:0
运行
复制
using SharpCompress.Archives;
using SharpCompress.Common;
using System.IO;

4. 基本用法

4.1 解压 ZIP 文件

一个简单的 ZIP 文件解压示例

代码语言:javascript
代码运行次数:0
运行
复制
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 文件

代码语言:javascript
代码运行次数:0
运行
复制
using (var archive = ArchiveFactory.CreateWritableArchive(ArchiveType.Zip, File.Create("new_archive.zip")))
{
    archive.AddAllFromDirectory("source_directory");
}

4.3 处理 RAR 文件(仅限读取)

由于 RAR 格式是专有格式,SharpCompress 只支持读取 RAR 文件:

代码语言:javascript
代码运行次数:0
运行
复制
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 中读取和写入压缩文件,这使得它可以用于网络请求、内存操作等场景

代码语言:javascript
代码运行次数:0
运行
复制
using (var stream = new FileStream("example.zip", FileMode.Open))
using (var archive = ArchiveFactory.Open(stream))
{
    // 处理解压逻辑
}

5.2 加密支持

某些压缩格式(如 ZIP)支持加密压缩包。SharpCompress 允许你在打开加密压缩包时提供密码

代码语言:javascript
代码运行次数:0
运行
复制
using (var archive = ArchiveFactory.Open("encrypted.zip", new ReaderOptions { Password = "password" }))
{
    // 解压逻辑
}

5.3 自定义提取选项

通过 ExtractionOptions,你可以控制是否覆盖现有文件、是否提取完整路径等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C#压缩解压文件处理方案
    • 1. 简介
    • 2. 支持的压缩格式
    • 3. 安装与引入
    • 4. 基本用法
      • 4.1 解压 ZIP 文件
      • 4.2 创建 ZIP 文件
      • 4.3 处理 RAR 文件(仅限读取)
    • 5. 高级特性
      • 5.1 流式处理
      • 5.2 加密支持
      • 5.3 自定义提取选项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档