C#压缩文件为zip格式
C#压缩文件为zip格式
需要ICSharpCode.SharpZipLib.dll,网上下载的到。
代码是从网上找来的:

1 public class ZipClass
2 {
3 #region 加压
4 /// <summary>
5 /// 功能:压缩文件(暂时只压缩文件夹下一级目录中的文件,文件夹及其子级被忽略)
6 /// </summary>
7 /// <param name="dirPath"> 被压缩的文件夹夹路径 </param>
8 /// <param name="zipFilePath"> 生成压缩文件的路径,为空则默认与被压缩文件夹同一级目录,名称为:文件夹名 +.zip</param>
9 /// <param name="err"> 出错信息</param>
10 /// <returns> 是否压缩成功 </returns>
11 static public bool ZipFile( string dirPath, string zipFilePath, out string err)
12 {
13 err = "";
14 if (dirPath == string .Empty)
15 {
16 err = "要压缩的文件夹不能为空! ";
17 return false ;
18 }
19 if (!Directory .Exists(dirPath))
20 {
21 err = "要压缩的文件夹不存在! ";
22 return false ;
23 }
24 //压缩文件名为空时使用文件夹名+ zip
25 if (zipFilePath == string .Empty)
26 {
27 if (dirPath.EndsWith("\\" ))
28 {
29 dirPath = dirPath.Substring(0, dirPath.Length - 1);
30 }
31 zipFilePath = dirPath + ".zip";
32 }
33
34 try
35 {
36 string[] filenames = Directory .GetFiles(dirPath);
37 using (ZipOutputStream s = new ZipOutputStream(File .Create(zipFilePath)))
38 {
39 s.SetLevel(9);
40 byte[] buffer = new byte[4096];
41 foreach (string file in filenames)
42 {
43 ZipEntry entry = new ZipEntry( Path.GetFileName(file));
44 entry.DateTime = DateTime.Now;
45 s.PutNextEntry(entry);
46 using (FileStream fs = File.OpenRead(file))
47 {
48 int sourceBytes;
49 do
50 {
51 sourceBytes = fs.Read(buffer, 0, buffer.Length);
52 s.Write(buffer, 0, sourceBytes);
53 } while (sourceBytes > 0);
54 }
55 }
56 s.Finish();
57 s.Close();
58 }
59 }
60 catch (Exception ex)
61 {
62 err = ex.Message;
63 return false ;
64 }
65 return true ;
66 }
67
68 #endregion
69
70 #region 解压方法
71 /// <summary>
72 /// 功能:解压 zip格式的文件。
73 /// </summary>
74 /// <param name="zipFilePath"> 压缩文件路径 </param>
75 /// <param name="unZipDir"> 解压文件存放路径 ,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹 </param>
76 /// <param name="err"> 出错信息</param>
77 /// <returns> 解压是否成功 </returns>
78 static public bool UnZipFile( string zipFilePath, string unZipDir, out string err)
79 {
80 err = "";
81 if (zipFilePath == string .Empty)
82 {
83 err = "压缩文件不能为空!";
84 return false ;
85 }
86 if (!File .Exists(zipFilePath))
87 {
88 err = "压缩文件不存在!";
89 return false ;
90 }
91 //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹
92 if (unZipDir == string .Empty)
93 unZipDir = zipFilePath.Replace( Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
94 if (!unZipDir.EndsWith("\\" ))
95 unZipDir += "\\";
96 if (!Directory .Exists(unZipDir))
97 Directory.CreateDirectory(unZipDir);
98
99 try
100 {
101 using (ZipInputStream s = new ZipInputStream(File .OpenRead(zipFilePath)))
102 {
103
104 ZipEntry theEntry;
105 while ((theEntry = s.GetNextEntry()) != null)
106 {
107 string directoryName = Path .GetDirectoryName(theEntry.Name);
108 string fileName = Path .GetFileName(theEntry.Name);
109 if (directoryName.Length > 0)
110 {
111 Directory.CreateDirectory(unZipDir + directoryName);
112 }
113 if (!directoryName.EndsWith("\\"))
114 directoryName += "\\";
115 if (fileName != String .Empty)
116 {
117 using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
118 {
119
120 int size = 2048;
121 byte[] data = new byte[2048];
122 while (true )
123 {
124 size = s.Read(data, 0, data.Length);
125 if (size > 0)
126 {
127 streamWriter.Write(data, 0, size);
128 }
129 else
130 {
131 break;
132 }
133 }
134 }
135 }
136 } //while
137 }
138 }
139 catch (Exception ex)
140 {
141 err = ex.Message;
142 return false ;
143 }
144 return true ;
145 } //解压结束
146 #endregion
147 }

C#压缩文件为zip格式的更多相关文章
- python实现压缩文件成zip格式
实现代码如下: #压缩文件 import time,zipfile class zip: def get_zip(self,files,zip_name): zp=zipfile.ZipFile(zi ...
- 如何在linux下解压缩rar和zip格式的文件压缩包
转载:http://oldboy.blog.51cto.com/2561410/597515 使用apt-get安装: sudo apt-get install rar zip rar使用: 将 ...
- Java生成压缩文件(zip、rar 格式)
jar坐标: <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</ar ...
- linux压缩文件命令-zip
首先cd到要压缩文件的目录,然后使用zip命令压缩文件 zip -r importExcel.zip importExcel -r表示递归 zip [参数] [打包后的文件名] [打包的目录路径] ...
- mac终端命令加密压缩文件为zip包
mac终端命令加密压缩文件为zip包,命令如下: zip -e ~/desktop/a.zip b.doc c.txt d.sql 注释:a.zip为加密后的文件 b.doc c.txt d.sql为 ...
- 下载zip格式文件(压缩Excel文件为zip格式)
Mongodb配置文件参考这一篇:http://www.cnblogs.com/byteworld/p/5913061.html package util; import java.io.Buffer ...
- Linux 解压/压缩xxx.zip格式(unZip Zip的安装和使用)
Linux系统没有自带的压缩解压工具:需要我们自己安装:当压缩包为.zip格式时,需要安装zip包 1.apt-get安装: apt-get install zip 2.yum安装: yum inst ...
- linux 学习笔记 显示压缩文件 gong.zip 的文件内容
#zip -v gong zip zip info: xxx >删除压缩文件中俄smart.txt 文件 #zip -d gong.zip smart.txt deleting:smart.tx ...
- python 压缩文件为zip后删除原文件
压缩.log 文件为zip后删除原文件 需要注意:本人作为小白,该脚本需要和.log在一起,后面有时间需要改正. #!/usr/local/python/bin/python #-*-coding=u ...
随机推荐
- python 学习笔记整理
首先自我批评一下,说好的一天写一篇博客,结果不到两天,就没有坚持了,发现自己做什么事情都没有毅力啊!不能持之以恒.但是,这次一定要从写博客开始来改掉自己的一个坏习惯. 可是写博客又该写点什么呢? 反正 ...
- Hadoop 学习笔记 (十) hadoop2.2.0 生产环境部署 HDFS HA Federation 含Yarn部署
其他的配置跟HDFS-HA部署方式完全一样.但JournalNOde的配置不一样>hadoop-cluster1中的nn1和nn2和hadoop-cluster2中的nn3和nn4可以公用同样的 ...
- [BZOJ 1045] [HAOI2008] 糖果传递
题目链接:BZOJ 1045 Attention:数据范围中 n <= 10^5 ,实际数据范围比这要大,将数组开到 10^6 就没有问题了. 我们先来看一下下面的这个问题. 若 n 个人坐成一 ...
- Delphi 版本号(D1到XE6),发现一个delphi.wikia.com网站
Borland Compiler Conditional Defines Edit Talk1 2,909PAGES ONTHIS WIKI Product Name Version Cond ...
- 【POJ】2886 Who Gets the Most Candies?
移动题目相当麻烦. #include <stdio.h> #include <string.h> #define MAXN 500005 #define lson l, mid ...
- (转载)mysql_query( )返回值
(转载)http://hi.baidu.com/tfbzccqceabfhyd/item/bd01db9f8995204af04215e4 调用mysql_query( ),当查询操作是update. ...
- Java---网络蜘蛛-网页邮箱抓取器~源码
刚刚学完Socket,迫不及待的做了这个网页邮箱抓取~~~ 现在有越来越多的人热衷于做网络爬虫(网络蜘蛛),也有越来越多的地方需要网络爬虫,比如搜索引擎.资讯采集.舆情监测等等,诸如此类.网络爬虫涉及 ...
- HDOJ 2010 水仙花数
Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位数,它的各位数字的立方和等于其本 ...
- wine on ubuntu linux, and source insight 绿色版的安装
1.安装一些必要组件 winetricks msxml3 gdiplus riched20 riched30 vcrun6 vcrun2005sp1 wenquanyi 2.拷贝字体 下载网盘中的字体 ...
- 前端开发者应当了解的 Web 缓存知识
缓存优点 通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备.对于前端开发者来说,浏览器充当了重要角色.除此外常见的还有各种各样的代理服务器也可以做缓存.当Web请求到达缓存时, ...