利用 SharpZipLib方便地压缩和解压缩文件(转)

利用 SharpZipLib方便地压缩和解压缩文件
最新版本的SharpZipLib(0.84)增加了很多新的功能,其中包括增加了FastZip类,这让我们可以非常方便地把一个目录压缩成一个压缩包,经测试可以很好地支持文件中包含中文以及空格的情况。

 

 1     /**/ /// <summary>
 2    /// Create a zip archive.
 3    /// </summary>
 4    /// <param name="filename">The filename.</param>
 5    /// <param name="directory">The directory to zip.</param> 

 6      public   static   void  PackFiles( string  filename,  string  directory)
 7      {
 8        try
 9        {
10            FastZip fz = new FastZip();
11            fz.CreateEmptyDirectories = true;
12            fz.CreateZip(filename, directory, true"");
13            fz = null;
14        }

15        catch (Exception)
16        {
17            throw;
18        }

19    }

20
21      /**/ /// <summary>
22    /// Unpacks the files.
23    /// </summary>
24    /// <param name="file">The file.</param>
25    /// <returns>if succeed return true,otherwise false.</returns>

26      public   static   bool  UnpackFiles( string  file,  string  dir)
27      {
28        try
29        {
30            if (!Directory.Exists(dir))
31                Directory.CreateDirectory(dir);
32
33            ZipInputStream s = new ZipInputStream(File.OpenRead(file));
34
35            ZipEntry theEntry;
36            while ((theEntry = s.GetNextEntry()) != null)
37            {
38
39                string directoryName = Path.GetDirectoryName(theEntry.Name);
40                string fileName = Path.GetFileName(theEntry.Name);
41
42                if (directoryName != String.Empty)
43                    Directory.CreateDirectory(dir + directoryName);
44
45                if (fileName != String.Empty)
46                {
47                    FileStream streamWriter = File.Create(dir + theEntry.Name);
48                    //FileStream streamWriter = File.Create( Path.Combine(dir,theEntry.Name) ) ;
49                    int size = 2048;
50                    byte[] data = new byte[2048];
51                    while (true)
52                    {
53                        size = s.Read(data, 0, data.Length);
54                        if (size > 0)
55                        {
56                            streamWriter.Write(data, 0, size);
57                        }

58                        else
59                        {
60                            break;
61                        }

62                    }

63
64                    streamWriter.Close();
65                }

66            }

67            s.Close();
68            return true;
69        }

70        catch (Exception)
71        {
72            throw;
73        }

上面代码需要引用:

using  ICSharpCode.SharpZipLib.Zip;
using  System.IO;

使用方法就不介绍了。

你可以到其官方网站下载最新版本的SharpZipLib:

http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
或者直接使用该链接下载:

  • Compiled assembly with documentation and install scripts Download [488 KB]
  • Source code and samples Download [622 KB]
  • Help file only Download [485 KB]

转载于:https://www.cnblogs.com/cuihongyu3503319/archive/2007/09/22/902448.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值