使用自訂的類別透過SharpZip執行Zip壓縮、解壓縮(VB.NET)

 

小喵最近遇到一个状况,小喵需要使用者上传一个档案,上传后再由小喵的系统接手处理该档案,但是如果上传的档案太大,会造成两个影响:1.占用带宽。2.使用者上传时间过久。

为了解决这样的问题,于是小喵希望使用者上传前,透过OS内建的Zipped压缩机制将文件压缩成zip档,然后上传后再由小喵的系统接手解压缩,之后再来处理档案。

那么就会遇到一个状况:.NET Framework里面虽然有System.IO.Compression这个命名空间,但是他的格式是Gzip而非ZIP,因此一般透过工具或者使用OS内建的Zipped产生的档案无法透过这个命名空间提供的方式来解压缩。小喵再次从网络上搜寻,发现有人透过J#的命名空间System.Java.Zip来处理。但是很不幸的是从.NET Framework 2.0开始不再支持J#这个语言。因此这样的方式也不行。U_U

因此小喵开始寻找第三方的解决方案,找到了一个SharpZipLib这个免费的组件有提供可以压缩与解压缩zip格式。不过该组件的官方网站请参考【http://www.icsharpcode.net/OpenSource/SharpZipLib/】。该网站也提供范例档案、原始码提供使用者参考与研究。小喵试用之后发现,他里面有提供一个FastZip的类别,里面可以快速的直行两个动作,分别是:

  1. 压缩某文件夹(含子目录)成为一个zip

  2. 解压缩一个zip文件到指定的目录

但是如果想要【压缩某单一档案成为zip档】,在这个FastZip类别中并没有提供,如果要做到这个需求,必须在撰写一些额外的程序代码来达到。这对于使用上感觉不是很直观

于是小喵自己在撰写一个类别将SharpZip包装起来,只提供三个简单的Function,提供以下的功能:

  1. ZipDir(SourceDir,TargetFile):压缩文件夹

  2. ZipFile(SourceFile,TargetFile):压缩单一档案

  3. UnZipFile(SourceFile,TargetDir):解压缩到指定文件夹

这样小喵就能够用较为直观的方式来压缩、解压缩。相关的原始码如下:
http://vip2.blueshop.com.tw/topcat/sharefile/MySharpZip2005.zip

使用方式:
先将该专案的bin中的DeBug中的两个dllICSharpCode.SharpZipLib.dll,MySharpZip】加入参考。
然后就可以

Dim  oZip  As   New  MySharpZip.CZip 
Dim  rc  As   String = oZip.UnZipFile( " D:\Temp\abc.zip " " D:\Temp "
If  rc  =   " Success "   Then  
    
Me .lblMsg.Text = " 解压缩成功!! "  
End   If

转载于:https://www.cnblogs.com/topcat/archive/2008/06/07/1215817.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值