C# 压缩文件夹中所有文件

news/2025/3/15 11:14:33/

工具:ICSharpCode.SharpZipLib.dll

ICSharp只支持一级文件压缩,所以需要将子文件夹读出来根据路径压缩:
成员变量:

List<string> m_fileNames = new List<string>();

获取子文件夹:

public void GetChildFiles(string path)
{string[] fileNames = Directory.GetFiles(path);foreach(string fileName in fileNames){m_fileNames.Add(fileName);}string[] directoryNames = Directory.GetDirectories(path);if (directoryNames.Length > 0){foreach(string directoryName in directoryNames){GetChildFiles(directoryName);}}
}

压缩:

public int ZipFileMain(string[] args,string password)
{if(!Directory.Exists(args[0])){return -1;                   //指定进行压缩的目录不存在}ZipOutputStream s = null;FileStream fs = null;try{GetChildFiles(args[0]);string filedirectory = Path.GetDirectoryName(args[1]);if (!Directory.Exists(filedirectory))Directory.CreateDirectory(filedirectory);s = new ZipOutputStream(File.Create(args[1]));s.SetLevel(6);//s.Password = password;foreach (string file in m_fileNames){fs = File.OpenRead(file);                 //打开压缩文件byte[] buffer = new byte[fs.Length];fs.Read(buffer, 0, buffer.Length);ZipEntry entry = new ZipEntry(file.Substring(args[0].Length+1));entry.DateTime = DateTime.Now;entry.Size = fs.Length;s.PutNextEntry(entry);s.Write(buffer, 0, buffer.Length);if (fs != null)fs.Close();}}catch(Exception ex){if (fs != null)fs.Close();if(s!=null){s.Finish();s.Close();}return -1;}if (s != null){s.Finish();s.Close();}return 1;
}

http://www.ppmy.cn/news/813749.html

相关文章

注册微信小程序账号 APPID的获取

点击注册页 选择小程序注册 填写写注册信息 祖册须注意 “作为登录帐号&#xff0c;请填写未被微信公众平台注册&#xff0c;未被微信开放平台注册&#xff0c;未被个人微信号绑定的邮箱” 注册完成后 请入填写邮箱查看邮件 接收到邮箱点击激活连接 将来到信息登记页面 因为…

皮卡车行业调研报告 - 市场现状分析与发展前景预测

出版商&#xff1a;贝哲斯咨询 获取报告样本&#xff1a; 企业竞争态势 该报告涉及的主要国际市场参与者有FCA、Ford、Toyota、Isuzu Motors、General Motors、Nissan、Honda、Tata Motors、Mahindra & Mahindra等。这些参与者的市场份额、收入、公司概况和SWOT分析都包含…

微信公众号开发:用户授权获取用户信息

获取用户授权用户信息中的assesstoken调用不限次数&#xff01;&#xff01;&#xff01;有效期两小时 header("Content-type: text/html; charsetutf-8"); $openid; $username; $img; if($_COOKIE[<span style"font-family: Arial, Helvetica, sans-serif;…

缓存穿透与布隆过滤器(Bloom Filter)

缓存穿透 在高并发场景中&#xff0c;为了避免请求直接打到数据库上&#xff08;会导致数据库出现性能问题&#xff0c;从而影响整个系统&#xff09;&#xff0c;常使用缓存来处理大部分请求&#xff0c;如memcached、ehcache、redis等。 但对于一些恶意请求&#xff0c;传统…

我的世界服务器皮肤怎么用文件夹,我的世界皮肤正文件,皮肤制作器怎么打开文件夹...

打开versions&#xff0c;我的世界皮肤站怎么找皮肤文件夹里百面有个小茶壶形状的文件&#xff0c;用压度缩工具打开它&#xff0c;依次打知开assets&#xff0c;minecraft&#xff0c;&#xff0c;textures&#xff0c;entity&#xff0c;先将里面自带道的原皮肤删掉&#xff…

微信小程序实现循环列表中加样式

最近开始接触小程序&#xff0c;所以记录一下做项目过程中遇到的问题&#xff0c;由于小程序不想做网站开发&#xff0c;可以直接点击添加样式&#xff0c;得通过this.setdata来设置 这是效果图&#xff1a; 第一步&#xff1a;核心是判断当前点击的项的id&#xff0c;通过三目…

微信公众号全局返回码

公众号每次调用接口时&#xff0c;可能获得正确或错误的返回码&#xff0c;开发者可以根据返回码信息调试接口&#xff0c;排查错误。 全局返回码说明如下&#xff1a; 返回码 说明 -1 系统繁忙&#xff0c;此时请开发者稍候再试 0 请求成功 40001 获取 access_token 时 A…

LeetCode 146. LRU缓存机制Golang版

LeetCode 146. LRU缓存机制Golang版 1. 问题描述 运用你所掌握的数据结构&#xff0c;设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存…