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 ...
随机推荐
- Balanced Lineup
Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 49061 Accepted: 22975 Case Time Lim ...
- IntraWeb.v14.0.32安装及破解指南
一.下载 首先从这里下载14.0.32版本的IntraWeb: 链接:http://pan.baidu.com/s/1c0rjnKO 密码:8kv2 二.卸载旧版 1. 我的Delphi版本是XE6, ...
- c# 测试
string input = "//a/@href "; int index = input.IndexOf("/@"); String attr = inpu ...
- CTSC2015&APIO2015滚粗记
CTSC 这次CTSC的考试,觉得还是考出了自己该有的水平.虽然自己最后还是没有得到金牌,但是我觉得自己尽力了,也没有什么太大的遗憾.比起省选,自己在应试的方面又有了很大的进步. Day1是我主要捞分 ...
- [BZOJ 1081] [SCOI2005] 超级格雷码 【找规律】
题目链接:BZOJ - 1081 备注:此题BZOJ上貌似没有 spj ,要把一般顺序的每个格雷码倒着输出...比如 0102 输出为 2010 题目分析 就是按照 Gray 码的生成方法写前几个出来 ...
- java 伪共享
MESI协议及RFO请求典型的CPU微架构有3级缓存, 每个核都有自己私有的L1, L2缓存. 那么多线程编程时, 另外一个核的线程想要访问当前核内L1, L2 缓存行的数据, 该怎么办呢?有人说可以 ...
- 【CF】220B Little Elephant and Array
区间动态统计的好题. /* */ #include <iostream> #include <string> #include <map> #include < ...
- Centos 6.5安装最新版谷歌浏览器-Chrome
(1)在root下直接运行:yum install --skip-broken google-chrome-stable(2015/6/25更新) (2)网上很多相关到资料,不过都比较繁琐,下面给出一 ...
- bzoj1475
明显的二分图最大独立点权集 ans=总点权-最小割(最大流) ..] ,,-,); dy:..] ,-,,); inf=; type node=record ne ...
- Nginx 代理 jira 和 confluence
原文出处:http://blog.chenlb.com/2012/01/nginx-proxy-jira-and-confluence.html jira 和 confluence 想部署到同一台机器 ...