使用SharpZipLib制作压缩解压缩程序

原创 2007年09月14日 02:06:00

晚上没啥事,看到一个SharpZipLib,挺不错,拿来做一个小的压缩解压缩程序 。

SharpZipLib是一个用C#写的支持Zip、GZip、Tar、BZip2等格式的压缩库。是开源的,这里是它的网址:http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx

我做一个很小的压缩解压缩程序,支持Zip的压缩与解压缩,并且在压缩解压缩时使用单独的线程,以免造成界面假死。

下载地址:http://www.5huan.cn/sth/ZipTest.zip


小的压缩解压缩程序

压缩解压缩都要使用FileStream类作为输入输出,然后使用SharpZipLib的ZipInputStream、ZipOutputStream两个类。ZipInputStream用于把压缩的数据解压成正常的数据, ZipOutputStream则用于把正常的数据压缩。还有一个类是ZipEntry,他是压缩文件中的每个项,我这里为了简化每个压缩文件中只包含了一个。

这个是压缩的方法:

public static void Zip(string SrcFile, string DstFile, int BufferSize)
...{
            FileStream fileStreamIn 
= new FileStream(SrcFile, FileMode.Open, FileAccess.Read);
            FileStream fileStreamOut 
= new FileStream(DstFile, FileMode.Create, FileAccess.Write);
            ZipOutputStream zipOutStream 
= new ZipOutputStream(fileStreamOut);

            
byte[] buffer = new byte[BufferSize];

            ZipEntry entry 
= new ZipEntry(Path.GetFileName(SrcFile));
            zipOutStream.PutNextEntry(entry);

            
int size;
            
do
            
...{
                size 
= fileStreamIn.Read(buffer, 0, buffer.Length);
                zipOutStream.Write(buffer, 
0, size);
            }
 while (size > 0);

            zipOutStream.Close();
            fileStreamOut.Close();
            fileStreamIn.Close();

}

解压缩的方法:

public static void UnZip(string SrcFile, string DstFile, int BufferSize)
...{
            FileStream fileStreamIn 
= new FileStream(SrcFile, FileMode.Open, FileAccess.Read);
            ZipInputStream zipInStream 
= new ZipInputStream(fileStreamIn);
            ZipEntry entry 
= zipInStream.GetNextEntry();
            FileStream fileStreamOut 
= new FileStream(DstFile + @"" + entry.Name, FileMode.Create, FileAccess.Write);

            
int size;
            
byte[] buffer = new byte[BufferSize];
            
do
            
...{
                size 
= zipInStream.Read(buffer, 0, buffer.Length);
                fileStreamOut.Write(buffer, 
0, size);
            }
 while (size > 0);

            zipInStream.Close();
            fileStreamOut.Close();
            fileStreamIn.Close();

}

经测试,效果还不错,处理大文件时就慢些,所以在界面上使用了新建一个线程来执行压缩和解压缩,以免界面出现假死。

csdn怎么上传文件呢?

C#利用SharpZipLib解压或压缩文件夹实例操作

转自:http://www.tzwhx.com/NewShow/newBodyShow/%E7%BC%96%E7%A8%8B%E7%BB%8F%E9%AA%8C_21338.html  这里主要...
  • wang4978
  • wang4978
  • 2011年08月22日 21:00
  • 3601

简单SharpZipLib使用方法

SharpZipLib提供了多种压缩算法的支持,纯csharp代码,参见http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp,你可...
  • ant20060808
  • ant20060808
  • 2006年08月18日 12:44
  • 5306

C#使用SharpZipLib解压Zip单个文件到内存

DoNetZip也是挺坑的,某些zip解压缩不了, 异常返回“Ionic.Zip.ZipException: Cannot read that as a ZipFile”, 只有和SharpZip...
  • aiqinxuancai
  • aiqinxuancai
  • 2016年01月25日 17:56
  • 793

使用SharpZipLib压缩打包多个内存中的文件

SharpZipLib是C#写的开源压缩解压缩组件,最近项目上遇到一个需求:根据用户选择的项目生成CSV文件并下载,后来改为同时生成2个CSV文件下载下来。想到的解决办法就是将2个CSV文件打包成一个...
  • studyzy
  • studyzy
  • 2013年09月10日 14:23
  • 1101

SharpZipLib 的使用(压缩,解压)

SharpZipLib 是一个免费的Zip操作类库,可以利用它对 ZIP 等多种格式进行压缩与解压。 下载网址 前的版本为0.86。 1、创建zip文件,并添加文件: using (ZipFile...
  • CatchMe_439
  • CatchMe_439
  • 2017年11月17日 11:28
  • 311

SharpZipLib压缩文件和文件夹

本文是在其他人基础上修改而来,测试过程: 正常zip方式压缩文件,然后用wrar工具可以解压出来(开始用wrar3.4版本的怎么也解不出来,以为是不支持wrar解压,后来改用3.9及4.11版本可以...
  • superhoy
  • superhoy
  • 2012年05月28日 09:59
  • 3068

使用 ICSharpCode.SharpZipLib.dll 压缩文件 方法实例

///         /// 使用 ICSharpCode.SharpZipLib.dll 压缩文件 方法实例         ///         /// 需要被压缩的文件路径   ...
  • wsc449
  • wsc449
  • 2012年01月07日 14:11
  • 2398

SharpZipLib

SharpZipLib下载地址:http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx     ZipEntry   entry...
  • fer_ba
  • fer_ba
  • 2009年12月25日 15:29
  • 606

在C#中使用SharpZipLib压缩解压缩zip文件

from:http://skysanders.net/subtext/archive/2010/05/23/sharpziplib-recursively-zip-directory-structur...
  • Koupoo
  • Koupoo
  • 2012年08月09日 12:01
  • 1296

SharpZipLib 数据压缩

在silverlight forum看了一个关于如果提高wcf性能的贴,觉得很受用。显然对于分布式应用程序,似乎没有什么比提高客户端的响应速度更值得关切。之后查找了相关资料,并动手做了一些练习.当然我...
  • GETENG2003
  • GETENG2003
  • 2010年07月26日 11:44
  • 737
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用SharpZipLib制作压缩解压缩程序
举报原因:
原因补充:

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