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

晚上没啥事,看到一个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怎么上传文件呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值