zip (ICSharpCode.SharpZipLib.dll文件需要下载)

ZipClass zc=new ZipClass ();
zc.ZipDir(@"E:\1\新建文件夹", @"E:\1\新建文件夹.zip", 1);//压缩
zc.UnZip(@"E:\1\新建文件夹.zip",@"E:\1\2222");//解压

  cs

 1 class ZipClass
 2 {
 3 public void UnZip(string zipFilePath, string unZipDir)
 4 {
 5 if (zipFilePath == string.Empty)
 6 {
 7 throw new Exception("压缩文件不能为空!");
 8 }
 9 if (!File.Exists(zipFilePath))
10 {
11 throw new System.IO.FileNotFoundException("压缩文件不存在!");
12 }
13 //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹 
14 if (unZipDir == string.Empty)
15 unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
16 if (!unZipDir.EndsWith("//"))
17 unZipDir += "//";
18 if (!Directory.Exists(unZipDir))
19 Directory.CreateDirectory(unZipDir);
20 
21 using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
22 {
23 
24 ZipEntry theEntry;
25 while ((theEntry = s.GetNextEntry()) != null)
26 {
27 string directoryName = Path.GetDirectoryName(theEntry.Name);
28 string fileName = Path.GetFileName(theEntry.Name);
29 if (directoryName.Length > 0)
30 {
31 Directory.CreateDirectory(unZipDir + directoryName);
32 }
33 if (!directoryName.EndsWith("//"))
34 directoryName += "//";
35 if (fileName != String.Empty)
36 {
37 using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
38 {
39 
40 int size = 2048;
41 byte[] data = new byte[2048];
42 while (true)
43 {
44 size = s.Read(data, 0, data.Length);
45 if (size > 0)
46 {
47 streamWriter.Write(data, 0, size);
48 }
49 else
50 {
51 break;
52 }
53 }
54 }
55 }
56 }
57 }
58 }
59 
60  
61 
62 public static void ZipDir(string sDir, string sZip, ZipOutputStream s)
63 {
64 string[] filenames = Directory.GetFiles(sDir);
65 string[] dirnames = Directory.GetDirectories(sDir);
66 Crc32 crc = new Crc32();
67 if (s == null)
68 {
69 s = new ZipOutputStream(File.Create(sZip));
70 s.SetLevel(6); // 0 - store only to 9 - means best compression
71 }
72 
73 
74 foreach (string file in filenames)
75 fileZipInStream(file, s);
76 
77 foreach (string dir in dirnames)
78 ZipDir(dir, "", s);
79 if (sZip != "")
80 {
81 s.Finish();
82 s.Close();
83 
84 FileInfo fInfo = new FileInfo(sZip);
85 long size = fInfo.Length;
86 //Log.WriteLogD("----------------" + size.ToString());
87 if (size < 100) 
88 File.Delete(sZip);
89 }
90 }
91 
92 }
View Code

ICSharpCode.SharpZipLib.dll下载地址:http://i.cnblogs.com/Files.aspx

感谢提供此类的朋友

转载于:https://www.cnblogs.com/yuanjiehot/p/4320976.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WORD关于论文格式设置

现今的论文格式要求越来越无语,封面页 摘要页 目录页 正文页,封面页 摘要页 不能有页眉页脚 目录页 要求倒是不算高,整出个目录就行 正文页 页眉无所谓,但是页脚要显示页码 1 不设置就好,但是有时候设置了页眉又删除了的话,会出现一个横线,这个横线是由 页眉 的样式所定义的,这…

秒杀系统 mysql_秒杀系统-介绍

秒杀系统秒杀系统其实是针对库存做的系统。用户成功秒杀商品&#xff0c;对于我们系统的操作就是减库存和记录用户的购买明细。用户的购买明细包括记录谁购买成功、购买成功的时间和付款信息。而对于减库存操作&#xff0c;需要考虑到以下两个问题&#xff1a;(1)若是用户成功秒…

MOSS中自定义WebService

(转http://tech.ddvip.com/2008-10/122527111786701.html&#xff0c;更详细见msdn&#xff1a;http://msdn.microsoft.com/zh-cn/library/ms464040.aspx) MOSS中已经提供的webservice都放在虚拟目录_vti_bin中&#xff0c;对应的物理目录为c:Program FilesCommon FilesMicroso…

执行execute时对象名 retime_record 无效_MyBatis 的执行流程怎么可以讲的这么透彻

前言MyBatis可能很多人都一直在用&#xff0c;但是MyBatis的SQL执行流程可能并不是所有人都清楚了&#xff0c;那么既然进来了&#xff0c;通读本文你将收获如下&#xff1a;1、Mapper接口和映射文件是如何进行绑定的2、MyBatis中SQL语句的执行流程3、自定义MyBatis中的参数设置…

WCF安全之ASP.NET兼容模式

本文是利用ASP.NET兼容模式实现WCF安全的一个完整示例&#xff0c;其中用到了ASP.NET的Forms身份验证及Membership&#xff0c;并启用了角色管理。 由于整套安全方案完全利用ASP.NET相关功能实现&#xff0c;而未用到WCF安全策略相关的包括WCF身份验证、WCF授权及WCF传输安全等…

javase基础复习攻略《七》

容器是什么&#xff1f;通俗的讲容器指可以装其它东西的器皿&#xff0c;前面我们提到的数组便是容器的一种&#xff0c;容器的概念在JAVA中便可以理解为用来存储其它对象的器皿。本篇就让我们一起来认识一下JAVA为我们提供的容器类。 1、容器API&#xff1a; J2SDK提供的容器A…

mysql2000数据库四合一_MSSQL2000四合一

MSSQL2000四合一是包含了MS Sql Server 2000 DEVELOPER、ENTERPRISE、PERSONAL、STANDARD 四个版本。在解压目录下有 SQL2000-KB884525-SP4-x86-CHS.EXE 这是SQL 2000 的 sp4 补丁。记录安装完后一定要安装上。个人版、企业版、专业版、开发版SQL Server 2000 是 Microsoft .NE…

jms mysql_JMS学习九(ActiveMQ的消息持久化到Mysql数据库)

1、将连接Mysql数据库的jar文件&#xff0c;放到ActiveMQ的lib目录下2、修改ActiveMQ的conf目录下的active.xml文件&#xff0c;修改数据持久化的方式2.1 修改原来的kshadb的持久化数据的方式2.2 连接Mysql的配置(注意配置文件放置的位置)3、将数据持久化Mysql的运行截图3.1 …

看完这篇不要告诉我不会封装ant design弹框组件了

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣 获取前端学习知识 1设计需求 封装一个弹框组件 直接调用接口 2技术栈 ant designreact 设计第一步 绘制样式 <ModalmaskClosable{false}visible{visible}title{签收协议}onOk{this.handleSignFor}onCancel…

mysql 报错3534_win7下安装MYSQL报错:MYSQL 服务无法启动的3534问题

win7下安装MYSQL,只到“net start mysql”这一步报错:3534的错误&#xff1a;是直接官网下载的压缩文件.不是安装文件.解决方法:1:环境变量PATH添加完成(例如&#xff1a;h:\mysql\\bin2:在mysql目录下&#xff0c;新建data目录。3:在mysql目录下 新建新建一个默认配置文件my.i…

Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映

前言&#xff1a; 如果你已经厌倦了使用PPT设置路径、设置时间、设置动画方式来制作动画特效、那么Impress.js将是你一个非常好的选择。 用它制作的PPT将更加直观、效果也是嗷嗷美观的。 当然&#xff0c;如果用它来装X&#xff0c;是需要付出一些代价的&#xff0c;不过如果你…

mysql gtid 主主_mysql GTID主从复制(主库在线,添加新丛库)

要求&#xff1a;1、 主库上线&#xff0c;主库不停止服务的前提下做主从复制2、 新添加一个丛库操作&#xff1a;1、 在主库导出数据(主库正常运行)&#xff1b;2、 将主库的sql文件传到丛库&#xff1b;3、 丛库恢复数据库&#xff…