ICSharpCode.SharpZipLib.Zip 压缩文件
- public class ZipFileHelper
- {
- List<string> urls = new List<string>();
- void Director(string dir)
- {
- DirectoryInfo d = new DirectoryInfo(dir);
- FileSystemInfo[] fsinfos = d.GetFileSystemInfos();
- foreach (FileSystemInfo fsinfo in fsinfos)
- {
- if (fsinfo is DirectoryInfo) //判断是否为文件夹
- {
- Director(fsinfo.FullName);//递归调用
- }
- else
- {
- // Console.WriteLine(fsinfo.FullName);//输出文件的全部路径
- urls.Add(fsinfo.FullName);
- }
- }
- }
- ///<summary>
- /// 创建ZIP文件
- ///</summary>
- public void CreateZipFile(string dir, string sTempFile, string sPassWord)
- {
- try
- {
- Director(dir);
- var files = urls.ToArray();
- using (ZipOutputStream s = new ZipOutputStream(File.Create(sTempFile)))
- {
- s.SetLevel(); // 压缩级别 0-9
- if (sPassWord != "")
- {
- s.Password = sPassWord; //Zip压缩文件密码
- }
- byte[] buffer = new byte[]; //缓冲区大小
- foreach (string file in files)
- {
- if (!string.IsNullOrEmpty(file))
- {
- if (File.Exists(file))
- {
- 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, , buffer.Length);
- s.Write(buffer, , sourceBytes);
- } while (sourceBytes > );
- }
- }
- else
- {
- //logger.Error("文件:" + file + "不存在。");
- }
- }
- }
- s.Finish();
- s.Close();
- }
- }
- catch (Exception ex)
- {
- //logger.Error("压缩文件时异常!");
- //logger.Error("异常描述:\t" + ex.Message);
- //logger.Error("异常方法:\t" + ex.TargetSite);
- //logger.Error("异常堆栈:\t" + ex.StackTrace);
- }
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="files">放入ZIP的文件路劲(含文件名)</param>
- /// <param name="sTempFile">创建的ZIP文件路劲(含文件名)</param>
- /// <param name="sPassWord">ZIP文件密码</param>
- /// <param name="folderNames">存放到ZIP中的文件夹名,空代表放在顶级目录</param>
- public void CreateZipFileMutilFolder(string[] files, string sTempFile, string sPassWord, string[] folderNames)
- {
- try
- {
- using (ZipOutputStream s = new ZipOutputStream(File.Create(sTempFile)))
- {
- s.SetLevel(); // 压缩级别 0-9
- if (sPassWord != "")
- {
- s.Password = sPassWord; //Zip压缩文件密码
- }
- byte[] buffer = new byte[]; //缓冲区大小
- int i = ;
- foreach (string file in files)
- {
- if (!string.IsNullOrEmpty(file))
- {
- if (File.Exists(file))
- {
- ZipEntry entry = new ZipEntry((string.IsNullOrEmpty(folderNames[i]) ? "" : (folderNames[i] + "\\")) + Path.GetFileName(file));
- entry.DateTime = DateTime.Now;
- s.PutNextEntry(entry);
- using (FileStream fs = File.OpenRead(file))
- {
- int sourceBytes;
- do
- {
- sourceBytes = fs.Read(buffer, , buffer.Length);
- s.Write(buffer, , sourceBytes);
- } while (sourceBytes > );
- }
- }
- else
- {
- //logger.Error("文件:" + file + "不存在。");
- }
- }
- i++;
- }
- s.Finish();
- s.Close();
- }
- }
- catch (Exception ex)
- {
- //logger.Error("压缩文件时异常!");
- //logger.Error("异常描述:\t" + ex.Message);
- //logger.Error("异常方法:\t" + ex.TargetSite);
- //logger.Error("异常堆栈:\t" + ex.StackTrace);
- }
- }
- }
ICSharpCode.SharpZipLib.Zip 压缩文件的更多相关文章
- 利用ICSharpCode.SharpZipLib.Zip进行文件压缩
官网http://www.icsharpcode.net/ 支持文件和字符压缩. 创建全新的压缩包 第一步,创建压缩包 using ICSharpCode.SharpZipLib.Zip; ZipOu ...
- C#使用ICSharpCode.SharpZipLib.dll压缩文件夹和文件
大家可以到http://www.icsharpcode.net/opensource/sharpziplib/ 下载SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, ...
- c# ICSharpCode.SharpZipLib.Zip实现文件的压缩
首先了解ZipOutPutStream和ZipEntry对象 ZipOutPutStream对象 如果要完成一个文件或文件夹的压缩,则要使用ZipOutputStream类.ZipOutputStre ...
- ICSharpCode.SharpZipLib工具压缩与解压缩zip文件
using System; using System.Collections.Generic; using System.IO; using System.Text; using ICSharpCod ...
- C#使用ICSharpCode.SharpZipLib.dll压缩多个文件
首先通过NuGet管理安装ICSharpCode.SharpZipLib.dll 以下是压缩的通用方法: using System; using System.IO; using System.Web ...
- 基于ICSharpCode.SharpZipLib.Zip的压缩解压缩
原文:基于ICSharpCode.SharpZipLib.Zip的压缩解压缩 今天记压缩解压缩的使用,是基于开源项目ICSharpCode.SharpZipLib.Zip的使用. 一.压缩: /// ...
- C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- 使用ICSharpCode.SharpZipLib.Zip实现压缩与解压缩
使用开源类库ICSharpCode.SharpZipLib.Zip可以实现压缩与解压缩功能,源代码和DLL可以从http://www.icsharpcode.net/OpenSource/SharpZ ...
- C#调用 ICSharpCode.SharpZipLib.Zip 实现解压缩功能公用类
最近想用个解压缩功能 从网上找了找 加自己修改,个人感觉还是比较好用的,直接上代码如下 using System; using System.Linq; using System.IO; using ...
随机推荐
- [转帖]【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别
https://www.cnblogs.com/sxdcgaq8080/p/7487369.html 其实不同的 openjdk的版本也不一样. atlassian说AdoptOpenJDK我们测试充 ...
- 自然语言处理工具HanLP-N最短路径分词
本篇给大家分享baiziyu 写的HanLP 中的N-最短路径分词.以为下分享的原文,部分地方有稍作修改,内容仅供大家学习交流! 首先说明在HanLP对外提供的接口中没有使用N-最短路径分词器的,作者 ...
- myeclipse中jpa的安装以及jpa reverse engining
myeclipse中jpa的安装以及jpa reverse engining 安装 右击 Configure Facets, Install JPA jpa reverse engining 1.db ...
- JMX jconsole 的使用
JMX 1. JMX简单介绍 JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展.这种机制可以方便的管理正在运行中的Java程序.常用于管理线程, ...
- mysql事务、redo日志、undo日志、checkpoint详解
转载: https://zhuanlan.zhihu.com/p/34650908 事务: 说起mysql innodb存储引擎的事务,首先想到就是ACID(不知道的请google),数据库是如何做到 ...
- java各种jar的下载地址和源码下载地址
1.jboss http://jbossmarshalling.jboss.org/downloads2.netty https://netty.io/downloads.html3.spring h ...
- MySQL性能优化(七):其它优化
原文:MySQL性能优化(七):其它优化 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/v ...
- 关于redis的几件小事(五)redis保证高并发以及高可用
如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 redis高并发:主从架构 ...
- Vue的nextTick是什么?
公司做之前项目的时候,遇到了一些比较困惑的问题,后来研究明白了nextTick的用法. 我们先看两种情况: 第一种: export default { data () { return { msg: ...
- React 长列表修改时避免全体渲染
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <script ...