C# 多文件压缩与解压
这个功能没什么可介绍的,大家都懂,直接上代码了。。
实现功能:
选择多个文件压缩成ZIP文件和解压ZIP文件
开发环境:
开发工具: Visual Studio 2013
.NET Framework版本:4.5
实现代码:
//需要添加ICSharpCode.SharpZipLib.Zip.dll到自己项目private void btnCompressFile_Click(object sender, EventArgs e){listFiles.Items.Clear();OpenFileDialog ofd = new OpenFileDialog();ofd.Multiselect = true;if (ofd.ShowDialog() == DialogResult.OK){listFiles.Items.AddRange(ofd.FileNames);}}private void btnCompress_Click(object sender, EventArgs e){if (listFiles.Items.Count == 0){MessageBox.Show("请先选择需要压缩的文件");return;}SaveFileDialog sfd = new SaveFileDialog();sfd.Filter = "压缩文件|*.zip";if (sfd.ShowDialog() == DialogResult.OK){string[] files = new string[listFiles.Items.Count];for (int i = 0; i < listFiles.Items.Count; i++){files[i] = listFiles.Items[i].ToString();}dynamic result;using (ZipOutputStream outStream = new ZipOutputStream(File.Create(sfd.FileName))){result = Zip(files, outStream, "123");}MessageBox.Show(result.msg);}}private void btnUnCompressFile_Click(object sender, EventArgs e){FolderBrowserDialog fbd = new FolderBrowserDialog();fbd.ShowNewFolderButton = true;if (fbd.ShowDialog() == DialogResult.OK){txtOutFile.Text = fbd.SelectedPath;}}private void btnUnCompress_Click(object sender, EventArgs e){if (string.IsNullOrWhiteSpace(txtOutFile.Text)){MessageBox.Show("请先选择解压路径");return;}OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "压缩文件|*.zip";if (ofd.ShowDialog() == DialogResult.OK){dynamic result = UnZip(ofd.FileName, txtOutFile.Text,"123");MessageBox.Show(result.msg);}}public dynamic Zip(string[] files, ZipOutputStream outStream, string pwd){try{for (int i = 0; i < files.Length; i++){if (!File.Exists(files[i])){throw new Exception("文件不存在");}using (FileStream fs = File.OpenRead(files[i])){byte[] buffer = new byte[fs.Length];fs.Read(buffer, 0, buffer.Length);if (!string.IsNullOrWhiteSpace(pwd)){outStream.Password = pwd;}ZipEntry ZipEntry = new ZipEntry(Path.GetFileName(files[i]));outStream.PutNextEntry(ZipEntry);outStream.Write(buffer, 0, buffer.Length);}}return new { result = true, msg = "压缩成功" };}catch (Exception ex){return new { result = true, msg = "压缩失败:" + ex.Message };}}public dynamic UnZip(string zipFile, string outPath, string pwd){try{if (!Directory.Exists(outPath)){Directory.CreateDirectory(outPath);}using (ZipInputStream zipInputStream = new ZipInputStream(File.OpenRead(zipFile))){if (!string.IsNullOrWhiteSpace(pwd)){zipInputStream.Password = pwd;}ZipEntry theEntry;while ((theEntry = zipInputStream.GetNextEntry()) != null){using (FileStream streamWriter = File.Create(outPath + "\\" + theEntry.Name)){byte[] data = new byte[1024 * 1024];int dataLength = 0;while ((dataLength = zipInputStream.Read(data, 0, data.Length)) > 0){streamWriter.Write(data, 0, dataLength);}}}}return new { result = true, msg = "解压成功" };}catch (Exception ex){return new { result = true, msg = "解压失败:" + ex.Message };}}
实现效果:
若需要源码,请私信 文件压缩与解压 获取;
由简入繁,拿来即用
更多精彩,请关注微信公众号:
C# 多文件压缩与解压相关推荐
- c# 文件压缩、解压及下载
C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件) C# 文件压缩与解压(ZIP格式) asp.net实现文件夹及文件压缩,并实现下载 转载于:https://www.cnblogs.co ...
- 基于哈夫曼编码完成的文件压缩及解压
这几天在较为认真的研究基于哈夫曼编码的文件压缩及解压,费了点时间,在这分享一下: 这里用链式结构,非顺序表结构: 文件压缩: 1.获取文件信息(这里采用TXT格式文本): 2.压缩文件: 3.写配置文 ...
- 7z001怎么解压在安卓手机上面_安卓zip文件压缩RAR解压手机下载-安卓zip文件压缩RAR解压v1.0最新版下载...
安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...
- java 操作Zip文件(压缩、解压、加密)
java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...
- 7z文件压缩、解压 (7zTool.exe)
工具下载 压缩为7z: 调用zip()函数 7z解压缩: 调用unzip()函数 using System; using System.Collections.Generic; using Syste ...
- linux把一个大文件压缩,linux大文件压缩及解压需要注意问题
注意: 大文件压缩及解压需要在后台进行,如果要查看解压详情,就要输出重定向. 远程服务器,要防止网络断开连接,导致终端关闭,此时终端断开,即使后台进行,解压以及压缩也会停止.解决方法:在指令前加noh ...
- cordova 安卓文件多选_安卓zip文件压缩RAR解压软件下载-安卓zip文件压缩RAR解压下载v3.0.4安卓版...
安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...
- 文件压缩、解压 (ZipTool.exe)
工具下载 压缩: 调用zip()函数. 解压缩:调用unzip()函数 添加ZipTool类至应用中,即可实现文件压缩.解压逻辑. using System; using System.Collec ...
- Java实现文件压缩与解压[zip格式,gzip格式]
原文:http://www.cnblogs.com/visec479/p/4112881.html#3069573 Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个 ...
- 解压ubi文件_Linux 文件压缩与解压相关
tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令 -x :解开一个压缩文件的参数指令 -t :查看压缩文件里面的文件 特别注意: c/x/t 同时只 ...
最新文章
- HttpModule与HttpHandler详解
- Codeforces Round #520 (Div. 2)
- Hibernate悲观锁/乐观锁
- 设计模式 - 创建型模式_ 单例模式 Singleton Pattern
- Javaweb学习路线(自学规划)
- Hive的数据模型-外部表
- 今天学习了无序列表和有序列表和使用HTML5创建表格
- NSSM的下载与使用
- 封玩家IP和机器码以及解开被封的教程
- c# 免费版pdf转word尝试
- 群晖NAS、硬盘及路由器选购及组网,打造家庭资源共享环境
- 【ACWing】1402. 星空之夜
- docker network create
- 如何激活优动漫PAINT,获取优动漫PAINT序列号
- 计算机怎么设置ie连接网络连接不上去,有网络连接,但浏览器不能上网怎么办?电脑高手教你怎么解决...
- NPOJ 1065 喵星人吃土豆
- 把鸡蛋放到一个篮子里,然后看好你的篮子
- IDC:微软Windows将于2007年失去统治地位
- 喝干红葡萄酒的十大好处
- CSDN Markdown编辑器将公式取消斜体的方法