ICSharpCode.SharpZipLib 初级使用

原创 2008年05月08日 19:41:00

近做的一个项目需要使用到在线解压缩的过程。

需求是这样的,用户可以将所有需要上传的文件进行打包然后上传到服务器,服务器将压缩包进行解压,然后对其中的文件进行逐个处理。

其中将压缩包进行服务器端解压的过程就是通过ICSharpCode.SharpZipLib.dll来实现的。对于这个dll文件,可以通过搜索这个dll文件的名字下载到。

原来没有使用过,所以拿来帮助文档依葫芦画瓢。

1. 在项目中添加对ICSharpCode.SharpZipLib.dll的引用;

2. 在需要使用到ICSharpCode.SharpZipLib中定义的类的编码界面中将其导入(Imports)

(在C#中是using);

3. 在选择命名空间的时候,你会发现在有这样几个同级的命名空间:

ICSharpCode.SharpZipLib.BZip2;

ICSharpCode.SharpZipLib.GZip;

ICSharpCode.SharpZipLib.Tar;

ICSharpCode.SharpZipLib.Zip

这四个命名空间就对应着四种文件压缩方式,其中我们用的较多的是Zip的压缩方式,因为通过WinRAR软件就可以将文件压缩成.Zip的压缩包。这里有两点需要说明一下:

1) 目前还没有发现提供对.RAR方式压缩文件操作的方法;

2) BZip2, GZip 这两种压缩算法仅仅针对一个文件的压缩,如果你的压缩包要包含许多文件,并需要将这些文件解压出来进行操作的话,最好选用Tar和Zip的压缩方式。

关于这四种压缩算法的介绍可以从维基百科上得到,这里就不再赘述了。

好了,下面看看在服务器端对Zip压缩文件进行解压缩的过程,下面是其帮助文档中提供的例子。由于这里最需要注意的就是ZipInputStream类的使用,所以你可以通过在帮助文档中搜索ZipInputStream找到这个例子。

using System;
using System.Text;
using System.IO;

using ICSharpCode.SharpZipLib.Zip;

class MainClass
...{
    
public static void Main(string[] args)
    
...{
       
//这里通过File.OpenRead方法读取指定文件,并通过其返回的FileStream构造ZipInputStream对象;
        using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) ...{

           
//每个包含在Zip压缩包中的文件都被看成是ZipEntry对象,并通过ZipInputStream的GetNextEntry方法
     
//依次遍历所有包含在压缩包中的文件。
            ZipEntry theEntry;
            
while ((theEntry = s.GetNextEntry()) != null...{
                
int size = 2048;
                
byte[] data = new byte[2048];
                
//然后以文件数据块的方式将数据打印在控制台上;
                Console.Write("Show contents (y/n) ?");
                
if (Console.ReadLine() == "y"...{
                    
while (true...{
                        size 
= s.Read(data, 0, data.Length);
                        
if (size > 0...{
                            Console.Write(
new ASCIIEncoding().GetString(data, 0, size));
                        }
 else ...{
                            
break;
                        }

                    }

                }

            }

        }

    }

}

这里需要注意的几个属性是:

1.  ZipEntry.Name, 可以得到包含在要所报文件中的文件名;

2.  ZipEntry.CompressedSize, 是指当前文件被压缩后的大小;

3.  ZipEntry.Size 是指当前文件原本大小。

这两个大小(Size)需要指明清楚,否则可能在写入文件的时候会出现文件内容被截断的现象。

ICSharpCode.SharpZipLib压缩解压

 一、使用ICSharpCode.SharpZipLib.dll;    下载地址    http://www.icsharpcode.net/OpenSource/SharpZipLib/Downl...
  • wjbaiverson
  • wjbaiverson
  • 2011年03月05日 22:11
  • 22146

未能加载文件或程序集 ICSharpCode.SharpZipLib

错误信息:在生成项目时提示以下信息:错误 3 未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.85.0.0, Culture=neutral, Public...
  • testcs_dn
  • testcs_dn
  • 2017年05月28日 14:44
  • 2604

ICSharpCode.SharpZipLib 初级使用

最近做的一个项目需要使用到在线解压缩的过程。需求是这样的,用户可以将所有需要上传的文件进行打包然后上传到服务器,服务器将压缩包进行解压,然后对其中的文件进行逐个处理。其中将压缩包进行服务器端解压的过程...
  • vividboy
  • vividboy
  • 2008年05月08日 19:41
  • 10252

ICSharpCode.SharpZLib的使用记录

====同事指点的==================  private void StartZip(string fileName, string sourceFolderPath, string...
  • WDYDXF
  • WDYDXF
  • 2012年05月03日 18:52
  • 3369

ICSharpCode.SharpZipLib.dll 源代码及示例,帮助

  • 2009年09月16日 10:27
  • 1.71MB
  • 下载

C#使用ICSharpCode.SharpZipLib压缩后进行web批量下载文件

原因: 最近做一个公司项目,点击导出想把各自报告书及请求箱单导出存为Excel,由于是客户端操作试了各种方法都不适合,并且由于文件较多,导出时需要每个文件单独另存成,这样导致请求后台数据流量较大,而...
  • kongwei521
  • kongwei521
  • 2016年04月16日 14:32
  • 4320

C# ICSharpCode.SharpZipLib 压缩、解压文件 附源码

http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZi...
  • zzq105_
  • zzq105_
  • 2017年08月23日 18:34
  • 383

使用ICSharpCode.SharpZipLib.dll实现在线解压缩

ICSharpCode.SharpZipLib.dll 是一个基于GNU的免费库文件,他的功能很强大。下载地址:http://www.icsharpcode.net/OpenSource/SharpZ...
  • yandong19861103
  • yandong19861103
  • 2009年03月09日 10:19
  • 998

.Net 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩

  • 2014年07月23日 21:20
  • 184KB
  • 下载

icsharpcode.sharpziplib.dll

  • 2011年09月05日 16:11
  • 236KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ICSharpCode.SharpZipLib 初级使用
举报原因:
原因补充:

(最多只允许输入30个字)