惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
博客园 - 【当耐特】
量子位
有赞技术团队
有赞技术团队
Jina AI
Jina AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
C
Check Point Blog
B
Blog RSS Feed
M
MIT News - Artificial intelligence
H
Help Net Security
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
A
About on SuperTechFans
腾讯CDC

博客园 - lzhdim

25个每个开发人员都应该掌握的JavaScript 数组方法 20260831 - 个人小作品更新 C#使用SQLite数据库例子 - 开源研究系列文章 20260830 - 个人小作品更新 20260829 - 个人小作品更新 13、JavaScript事件循环机制 - JavaScript学习系列文章 首款媲美分体水冷的一体水冷!微星CORELIQUID E15 360水冷散热器评测:目前为止 锐龙9 9950X3D最强性能释放 JavaScript常见的内存泄露问题 - JavaScript学习系列文章 C#开发的颜色取色器 - 开源研究系列文章 - 个人小作品 成长环境 - 我的闪存 提高 SQL 语句执行速度的方法 JavaScript安全最佳实践 关闭iPhone一些默认设置,让iPhone更流畅 20260814 - 个人小作品更新 JavaScript对象与元编程 20260812 - 个人小作品更新 JavaScript 模块化系统 Markdown 语法完全指南 C# 通过 Windows API 实现进程内存读写操作 JavaScript 函数进阶课题 C#开发的基于钩子技术监测键鼠事件的例子 - 开源项目研究文章 JavaScript异步编程的演进 近十年最帅风冷!酷冷至尊V8 ACE 3DHP散热器评测:单塔能干翻双塔 20260723 - 个人小作品更新 C# 中读取CPU、硬盘和内存温度 雷柏VT3s MAX鼠标评测:中小手型用户也没有被遗忘 顶尖性能的小号电竞鼠标来了 JavaScript 中的原型与继承 1分钟查清局域网所有IP 20260714 - 个人小作品更新 WorkBuddy 完整教程手册
SharpCompress:跨平台的 C# 压缩与解压库
lzhdim · 2026-04-09 · via 博客园 - lzhdim

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

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

对于需要长期归档和流式处理的场景,推荐使用 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,你可以控制是否覆盖现有文件、是否提取完整路径等。