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


    http://hardrock.cnblogs.com/archive/2005/12/23/303209.html
    利用 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
    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]

     

    [DNN学习所得]让IE也能实现解压缩功能(提供演示源码下载)
    http://esshs.cnblogs.com/archive/2006/03/04/164162.html

  • 相关阅读:
    Confluence 6 从一个备份中获得文件附件
    Confluence 6 从其他备份中恢复数据
    Confluence 6 从生产环境中恢复一个测试实例
    从 Confluence 5.3 及其早期版本中恢复空间
    Confluence 6 恢复一个空间的问题解决
    Confluence 6 从一个 XML 备份中导入一个空间
    Confluence 6 恢复一个空间
    Confluence 6 恢复一个站点有关使用站点导出为备份的说明
    网易蜂巢(云计算基础服务)MongoDB服务重磅来袭
    pdfjs viewer 开发小结
  • 原文地址:https://www.cnblogs.com/flyfish/p/357221.html
Copyright © 2020-2023  润新知