如何压缩多个文件/文件夹(GZipStream and C#)

在.Net Framework 2.0 中添加了System.IO.Compression 类来实现对文件的压缩/解压(GZipStream方

法),下面我们来看一个简单的例子.

Code1:

1    public static void Compress(string filePath, string zipPath)
2    {
3      FileStream sourceFile = File.OpenRead(filePath);
4      FileStream destinationFile = File.Create(zipPath);
5      byte[] buffer = new byte[sourceFile.Length];
6      GZipStream zip = null;
7      try
8      {
9        sourceFile.Read(buffer, 0, buffer.Length);
10        zip = new GZipStream(destinationFile, CompressionMode.Compress);
11        zip.Write(buffer, 0, buffer.Length);
12      }
13      catch
14      {
15        throw;
16      }
17      finally
18      {
19        zip.Close();
20        sourceFile.Close();
21        destinationFile.Close();
22      }
23    }
24
25    public static void Decompress(string zipPath,string filePath)
26    {
27      FileStream sourceFile = File.OpenRead(zipPath);
28
29      string path = filePath.Replace(Path.GetFileName(filePath), "");
30
31      if(!Directory.Exists(path))
32        Directory.CreateDirectory(path);
33
34      FileStream destinationFile = File.Create(filePath);
35      GZipStream unzip = null;
36      byte[] buffer = new byte[sourceFile.Length];
37      try
38      {
39        unzip = new GZipStream(sourceFile, CompressionMode.Decompress,

true);
40        int numberOfBytes = unzip.Read(buffer, 0, buffer.Length);
41
42        destinationFile.Write(buffer, 0, numberOfBytes);
43      }
44      catch
45      {
46        throw;
47      }
48      finally
49      {
50        sourceFile.Close();
51        destinationFile.Close();
52        unzip.Close();
53      }
54    }

用例:

1.压缩

1      string folder = Path.Combine(Server.MapPath("~"), "TestCompress");
2      string file = "file1.txt";
3      string zip = "myzip";
4
5      SampleCompress.Compress(Path.Combine(folder, file), Path.Combine(folder,

zip));

2.解压

1      string folder = Path.Combine(Server.MapPath("~"), "TestCompress");
2      string file = "file1.txt";
3      string zip = "myzip";
4
5      SampleCompress.Decompress(Path.Combine(folder, zip),
Path.Combine

(Path.Combine(folder, "zipfolder"), file));

时间: 2024-11-14 22:54:26

如何压缩多个文件/文件夹(GZipStream and C#)的相关文章

在服务端合并和压缩JavaScript和CSS文件

CSS Sprites和图像映射现在已经随处可见了,但由于IE6和IE7不支持Data URI以及性能问题,这项技术尚未大量使用.目前大部分网页中的JavaScript和CSS文件数量和开发时一致,少量的网页会根据实际情况采取本地合并,这些合并中相当多的是有选择地手动完成,每次新的合并都需要重新在本地完成并上传到服务器,比较的随意和繁琐,同样文件的压缩也有类似的情况.而利用服务端的合并和压缩,我们就可以按照开发的逻辑尽可能让文件的颗粒度变小,利用网页中URL的规则来自动实现文件的合并和压缩,这会

什么情况使用NTFS压缩好?NTFS文件压缩使用教程

哪些适合NTFS压缩? 很少访问的文件--如果你很少使用这些文件,那么压缩可能造成的速度下降基本无法察觉. 非压缩格式文件--Office文档,文本文档,PDF等类型的文件压缩率会比较显著,而MP3.JPEG和视频文件它们本身就是压缩过的格式,因此再次进行压缩的意义不大,甚至可能毫无效果. 哪些不适合NTFS压缩? 系统文件和其他程序文件--压缩后会显著降低系统性能,还可能导致其他问题的出现.在如今的桌面电脑和笔记本电脑上,CPU大部分时间都处于空闲状态,让它有能力快速进行解压缩.在服务器上,C

SQLSERVER备份并压缩备份后的文件

server|sqlserver|备份|压缩 SQLSERVER2000 备份 例1:(备份) 1  use master2  declare @path='c:\aa\zy.bak'3  backup database zy to 4  disk=@path with noinit 说明:    1 使用系统库    2 设置备份的路径及文件名,注意是用单引号引用.    3 需备份的数据库    4 设置备份的驱动器,将路径设给驱动器,再设定备份的方式(重写或覆盖) 例2:(压缩备份的数据库

pb中压缩整理access数据库文件(mdb)

access|数据|数据库|压缩          其实实现方法别的语言已经很明确了,我这里只是用pb整理了一下,方便需要这个功能的同学.        下面直接给出方法函数:        1.申明外部函数,用来取系统的临时路径.  FUNCTION ulong GetTempPath(ulong nBufferLength,ref string lpBuffer) LIBRARY "kernel32.dll" ALIAS FOR "GetTempPathA"  

用SQL Storage Compress压缩SQL Server数据库文件

Rea Hat提供了类似的工具SQL Storage Compress,而且号称可以达到90%的压缩比.SQL Storage Compress提供14天的使用版,下载后安装会启动HyperBac Control Service.这个服务配合Windows I/O Manager将SQLServer的读写请求压缩或者解压缩,对于SQL Server用户没有任何影响.工作原理见下图: SQLStorage Compress可以压缩MDF, LDF, NDF文件,但是只是针对于文件的,不能针对单表或

vbs通过WMI修改文件文件夹的NTFS权限

使用WMI修改文件文件夹的NTFS权限实现方法,需要的朋友可以参考下   使用WMI修改文件文件夹的NTFS权限, 代码: 复制代码 代码如下: strUser = "guests" strPath = "D:abc.txt" RetVal = AddPermission(strUser,strPath,"R",True) '-------------------------------------------------------------

使用GruntJS链接与压缩多个JavaScript文件过程详解

怎么把多个JS文件搞成一个啊,GruntJS – JavaScript多文件编译,风格检查,链接与压缩神器,使用过程如下,有需要的朋友可以参考下,希望对大家有所帮助   自己写了个简单的HTML5 Canvas的图表库,可以支持饼图,折线图,散点图,盒子图 柱状图,同时支持鼠标提示,绘制过程动画效果等.最终我想把这些多个JS文件变成 一个JS文件发布出去,于是我的问题来啦,怎么把这些JS文件搞成一个啊,群里有个 朋友告诉我,GruntJS – JavaScript多文件编译,风格检查,链接与压缩

文件(文件夹)删除拷贝操作类

文件(文件夹)相关操作.以下各种讨论基于Windows+VC7.0开发环境. 实现文件(文件夹)操作的方式和函数多种多样,在这里我们只是很浅显讨论其中的一两中方法的应用.如果你想了解更多的请参考你编译系统的的帮助文件.也可以和我讨论: MSN:Ugg_xchj@hotmail.com 为了更好的对文件(文件夹)进行操作,我们先讲解一些基本知识.最后我们将实现一个基于我们自己方法的文件(文件夹)create,copy,delete等操作的类.,如果你对文件(文件夹)操作已经非常熟悉,可以跳过前边部

如何在Linux中压缩及解压缩.bz2文件

对文件进行压缩,可以通过使用较少的字节对文件中的数据进行编码来显著地减小文件的大小,并且在跨网络的文件的备份和传送时很有用. 另一方面,解压文件意味着将文件中的数据恢复到初始状态. Linux 中有几个文件压缩和解压缩工具,比如gzip.7-zip.Lrzip.PeaZip 等等. 本篇教程中,我们将介绍如何在 Linux 中使用 bzip2 工具压缩及解压缩.bz2文件. bzip2 是一个非常有名的压缩工具,并且在大多数主流 Linux 发行版上都有,你可以在你的发行版上用合适的命令来安装它

DOS批处理命令递归删除给定的文件(夹),兼VC工程清理小工具

使用dos批处理命令递归删除指定的文件(夹): (下面内容针对清理VC工程!自己按说明任意修改) 2014-06-10修改:删除前增加了[y,n]询问: [plain] view plaincopyprint? echo off      rem 递归删除当前文件下指定扩展名的文件   rem 如果想要添加其他的扩展名文件,按下面del开头格式的行,继续添加对应的扩展名即可   rem 添加del扩展名需注意:如"*.res",会把"*.resx"的文件也删掉(c#