0

0

C#怎么进行文件压缩和解压 C# ZipFile类使用方法

幻夢星雲

幻夢星雲

发布时间:2026-01-11 10:46:02

|

211人浏览过

|

来源于php中文网

原创

C#中文件压缩解压最常用方式是System.IO.Compression.ZipFile类,支持目录级压缩(CreateFromDirectory)和解压(ExtractToDirectory),需注意路径要求、文件存在性及编码兼容性。

c#怎么进行文件压缩和解压 c# zipfile类使用方法

在 C# 中进行文件压缩解压,最常用、最简单的方式是使用 System.IO.Compression.ZipFile 类(.NET 4.5+),它封装了底层 ZIP 操作,无需第三方库,支持直接打包/解包整个目录。

压缩文件或文件夹(ZipFile.CreateFromDirectory)

把一个文件夹整体打包成 ZIP 文件,用 CreateFromDirectory 最方便。注意:源路径必须是**文件夹路径**,不能直接压缩单个文件(如需压缩单个文件,可先把它放进临时文件夹再压缩,或改用 ZipArchive)。

  • 目标 ZIP 文件不能已存在(会抛异常),需确保路径不存在,或手动删除
  • 第三个参数 CompressionLevel 可选:Optimal(默认,高压缩)、Fastest(快但体积大)、NoCompression
  • 第四个参数 includeBaseDirectory 决定 ZIP 包里是否多套一层同名文件夹

示例:

95Shop仿醉品商城
95Shop仿醉品商城

95Shop可以免费下载使用,是一款仿醉品商城网店系统,内置SEO优化,具有模块丰富、管理简洁直观,操作易用等特点,系统功能完整,运行速度较快,采用ASP.NET(C#)技术开发,配合SQL Serve2000数据库存储数据,运行环境为微软ASP.NET 2.0。95Shop官方网站定期开发新功能和维护升级。可以放心使用! 安装运行方法 1、下载软件压缩包; 2、将下载的软件压缩包解压缩,得到we

下载

using System.IO.Compression;

// 将 D:\MyData 压缩为 D:\backup.zip
ZipFile.CreateFromDirectory(@"D:\MyData", @"D:\backup.zip",
CompressionLevel.Optimal, includeBaseDirectory: false);

解压 ZIP 文件(ZipFile.ExtractToDirectory)

解压也很直观,指定 ZIP 路径和目标文件夹即可。目标文件夹**不需要预先创建**,方法会自动创建(包括中间路径)。

  • 如果目标文件夹已存在且非空,解压时会覆盖同名文件(不会清空整个目录)
  • 不支持带密码的 ZIP(需用第三方库如 SharpZipLibDotNetZip
  • 路径中的非法字符(如 ../)会被自动过滤,相对安全

示例:


ZipFile.ExtractToDirectory(@"D:\backup.zip", @"D:\Restored");

更灵活控制:用 ZipArchive 读写单个文件

当需要添加/读取 ZIP 中特定文件、跳过某些项、或处理流(如从内存或 HTTP 响应中解压),就该用 ZipArchive 类。

  • 压缩:新建 ZipArchive(Mode.Write),用 CreateEntry 添加条目,再写入内容流
  • 解压:打开 ZIP 流,遍历 Entries,对每个 ZipArchiveEntry 调用 ExtractToFile 或读取 Open()
  • 支持只读、只写、更新三种模式;可配合 MemoryStream 实现无磁盘操作

小技巧:压缩单个文件可这样绕过“必须是目录”的限制:


using (var zipStream = new FileStream("single.zip", FileMode.Create))
using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create))
{
var entry = archive.CreateEntry("report.pdf");
using (var entryStream = entry.Open())
using (var fileStream = File.OpenRead(@"C:\temp\report.pdf"))
{
fileStream.CopyTo(entryStream);
}
}

注意事项和常见问题

ZipFile 类位于 System.IO.Compression.FileSystem 程序集,.NET Core/.NET 5+ 已内置;但旧版 .NET Framework 项目可能需手动添加对该程序集的引用(NuGet 包 System.IO.Compression.FileSystem,仅 Framework 4.5 需要)。

  • 中文路径/文件名默认支持(UTF-8 编码),但部分老系统解压软件可能显示乱码(建议测试目标环境)
  • 不支持 ZIP64(超 4GB 文件或超 65535 个文件),大文件场景请考虑分卷或换库
  • 解压时若目标路径含非法字符(如 :),会跳过该条目并抛 IOException

基本上就这些。日常压缩备份、打包发布资源,ZipFile 完全够用;有进阶需求再切入 ZipArchive

相关专题

更多
http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

335

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

406

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

1704

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1968

2024.08.16

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

34

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

14

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

33

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

18

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

12

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.7万人学习

Rust 教程
Rust 教程

共28课时 | 4.4万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号