C# 制作Zip压缩包

8/3/2015来源:C#应用人气:1781

C# 制作Zip压缩包

压缩包制作也是很多项目中需要用到的功能。比如有大量的文件(假设有10000个)需要上传,1个1个的上传似乎不太靠谱(靠,那得传到什么时候啊?),这时我们可以制作一个压缩包zip,直接传这个文件到服务器端,然后在服务器目录解压,释放里面的文件。

这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求。

ICSharpCode.SharpZipLib提供了两个压缩算法的实现,分别是BZIP2(压缩时间长,压缩率高)和GZIP(压缩效率高,压缩率低)。

先定义一个枚举,用于程序标示是哪个压缩算法。

01/// <summary>
02/// 压缩枚举
03/// </summary>
04publicenumZipEnum
05{
06//压缩时间长,压缩率高
07BZIP2,
08
09//压缩效率高,压缩率低
10GZIP
11}

单个文件的压缩:

01#region 制作压缩包(单个文件压缩)
02/// <summary>
03/// 制作压缩包(单个文件压缩)
04/// </summary>
05/// <param name="sourceFileName">原文件</param>
06/// <param name="zipFileName">压缩文件</param>
07/// <param name="zipEnum">压缩算法枚举</param>
08/// <returns>压缩成功标志</returns>
09publicstaticboolZipFile(stringsrcFileName,stringzipFileName, ZipEnum zipEnum)
10{
11boolflag =true;
12try
13{
14switch(zipEnum)
15{
16caseZipEnum.BZIP2:
17
18FileStream inStream = File.OpenRead(srcFileName);
19FileStream outStream = File.Open(zipFileName, FileMode.Create);
20
21//参数true表示压缩完成后,inStream和outStream连接都释放
22BZip2.ComPRess(inStream, outStream,true, 4096);
23
24inStream.Close();
25outStream.Close();
26
27
28break;
29caseZipEnum.GZIP:
30
31FileStream srcFile = File.OpenRead(srcFileName);
32
33GZipOutputStream zipFile =new