免费的Zip操作类库--SharpZipLib

47 篇文章 0 订阅
  SharpZipLib 是一个免费的Zip操作类库,可以利用它对 ZIP 等多种格式进行压缩与解压。下载网址: http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx 。目前的版本为0.86。

1、创建zip文件,并添加文件:

using  (ZipFile zip  =  ZipFile.Create( @" E:\test.zip " )) 

    zip.BeginUpdate(); 
    zip.Add(
@" E:\文件1.txt " ); 
    zip.Add(
@" E:\文件2.txt " ); 
    zip.CommitUpdate(); 

 

2、将文件夹压缩为文件

( new  FastZip()).CreateZip( @" E:\test.zip " @" E:\test\ " true "" );

 

最后一个参数是使用正则表达式表示的过滤文件规则。CreateZip方法有3个重载版本,其中有目录过滤参数、文件过滤参数及用于指定是否进行子目录递归的一个bool类型的参数。

3、将文件添加到已有zip文件中

using  (ZipFile zip  =  new  ZipFile( @" E:\test.zip " ))
{
    zip.BeginUpdate();
    zip.Add(
@" E:\test.doc " );
    zip.CommitUpdate();
}

 

4、列出zip文件中文件

using  (ZipFile zip  =  new  ZipFile( @" E:\test.zip " ))
{
    
string  list  =  string .Empty;
    
foreach  (ZipEntry entry  in  zip)
    {
        list 
+=  entry.Name  +  " \r\n " ;
    }
    MessageBox.Show(list);
}

 

5、删除zip文件中的一个文件

using  (ZipFile zip  =  new  ZipFile( @" E:\test.zip " ))
{
    zip.BeginUpdate();
    zip.Delete(
@" test.doc " );
    zip.Delete(
@" test22.txt " );
    zip.CommitUpdate();
}

 

 6、解压zip文件中文件到指定目录下

( new  FastZip()).ExtractZip( @" E:\test.zip " @" E:\test\ " "" );

 

7、常用类

ZipInputStream、GZipInputStream用于解压缩Deflate、GZip格式流,ZipOutputStream、GZipOutputStream用于压缩Deflate、GZip格式流。
StreamUtil类包含了几个Stream处理辅助方法:
  1) Copy(Stream, Stream, Byte[])用于从一个Stream对象中复制数据到另一Stream对象。有多个重写。
  2) ReadFully(Stream, Byte [])用于从Stream对象中读取所有的byte数据。有多个重写。

 

个人用到的一个类,给出:

using System;
using System.Collections.Generic;
using System.Text;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
using System.IO;

namespace BtMaker.Common
{
    class ZipClass
    {
        public static void CompressFolder(string zipFileName,string srcDir,bool recurse)
        {
            if (Directory.Exists(srcDir))
            {
                (new FastZip()).CreateZip(zipFileName, srcDir, true, "");
            }            
        }

        public static void Unzip(string zipFilePath, string unzipDirPath)
        {
            if (!File.Exists(zipFilePath))
            {
                return;
            }

            if (Directory.Exists(unzipDirPath))
            {
                (new FastZip()).ExtractZip(zipFilePath, unzipDirPath, "");               
            }           
        }

        public static void CompressFile(string srcFile,string zipFile)
        {
            if (!File.Exists(srcFile))
            {
                return;
            }
            using (ZipFile zip = ZipFile.Create(zipFile))
            {
                zip.BeginUpdate();
                FileInfo fi = new FileInfo(srcFile);
                Directory.SetCurrentDirectory(fi.DirectoryName);
                zip.Add(fi.Name);               
                zip.CommitUpdate();
            }
        }

    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值