C#实现文件压缩与解压的方法示例【ZIP格式】
发布时间 - 2026-01-11 01:50:29 点击率:次本文实例讲述了C#实现文件压缩与解压的方法。分享给大家供大家参考,具体如下:

在企业开发过程中经常会遇到文件的压缩与解压,虽然网上很多流行的压缩文件格式都是RAR的,但是由于RAR不是一个开放的标准,因此ZIP成了更多人的选择。如果你不想自己开发的话可以选择开源的项目,比如SharpZipLib就是一个不错的选择。
组件的使用比较简单,请参照下面的代码。点击下载项目源码。
/*
* Gary Zhang -- cbcye@live.com
* www.cbcye.com
* www.quicklearn.cn
* cbcye.cnblogs.com
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
using System.Diagnostics;
using ICSharpCode.SharpZipLib.Core;
namespace TestConsole
{
class Program
{
static void Main()
{
//CreateZipFile(@"d:\", @"d:\a.zip");
UnZipFile(@"d:\a.zip");
Console.Read();
}
private static void CreateZipFile(string filesPath, string zipFilePath)
{
if (!Directory.Exists(filesPath))
{
Console.WriteLine("Cannot find directory '{0}'", filesPath);
return;
}
try
{
string[] filenames = Directory.GetFiles(filesPath);
using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFilePath)))
{
s.SetLevel(9); // 压缩级别 0-9
//s.Password = "123"; //Zip压缩文件密码
byte[] buffer = new byte[4096]; //缓冲区大小
foreach (string file in filenames)
{
ZipEntry entry = new ZipEntry(Path.GetFileName(file));
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(file))
{
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
s.Finish();
s.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("Exception during processing {0}", ex);
}
}
private static void UnZipFile( string zipFilePath)
{
if (!File.Exists(zipFilePath))
{
Console.WriteLine("Cannot find file '{0}'", zipFilePath);
return;
}
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
Console.WriteLine(theEntry.Name);
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
// create directory
if (directoryName.Length > 0)
{
Directory.CreateDirectory(directoryName);
}
if (fileName != String.Empty)
{
using (FileStream streamWriter = File.Create(theEntry.Name))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
}
}
}
}
}
}
}
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》
希望本文所述对大家C#程序设计有所帮助。
# C#
# 文件
# 压缩
# 解压
# ZIP格式
# C#实现GZip压缩和解压缩入门实例
# C#实现rar压缩与解压缩文件的方法
# C#文件流进行压缩和解压缩的方法
# C# 利用ICSharpCode.SharpZipLib实现在线压缩和解压缩
# asp.net C#实现解压缩文件的方法
# C#实现的文件压缩和解压缩类
# C#实现压缩和解压缩的方法示例【Gzip和Zip方式】
# C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压功能
# C#自定义字符串压缩和解压缩的方法
# C#压缩或解压rar、zip文件方法实例
# 程序设计
# 都是
# 如果你
# 成了
# 相关内容
# 感兴趣
# 数据结构
# 给大家
# 点击下载
# 可以选择
# 更多关于
# 经常会
# 所述
# 开源
# 使用技巧
# 面向对象
# 压缩文件
# 过程中
# 文件压缩
# 讲述了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel观察者模式如何使用_Laravel Model Observer配置
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
新三国志曹操传主线渭水交兵攻略
Laravel怎么清理缓存_Laravel optimize clear命令详解
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
如何在宝塔面板中创建新站点?
如何用JavaScript实现文本编辑器_光标和选区怎么处理
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
网站建设保证美观性,需要考虑的几点问题!
详解CentOS6.5 安装 MySQL5.1.71的方法
js实现获取鼠标当前的位置
高性价比服务器租赁——企业级配置与24小时运维服务
Laravel如何升级到最新版本?(升级指南和步骤)
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
如何快速生成可下载的建站源码工具?
昵图网官网入口 昵图网素材平台官方入口
Laravel怎么判断请求类型_Laravel Request isMethod用法
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Bootstrap整体框架之CSS12栅格系统
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
IOS倒计时设置UIButton标题title的抖动问题
Mybatis 中的insertOrUpdate操作
Laravel定时任务怎么设置_Laravel Crontab调度器配置
如何用景安虚拟主机手机版绑定域名建站?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
高性能网站服务器部署指南:稳定运行与安全配置优化方案
php json中文编码为null的解决办法
黑客入侵网站服务器的常见手法有哪些?
三星、SK海力士获美批准:可向中国出口芯片制造设备
Laravel怎么在Controller之外的地方验证数据
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
上一篇:Linux高级命令(扩展)
上一篇:Linux高级命令(扩展)

