zoukankan      html  css  js  c++  java
  • 利用 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]
  • 相关阅读:
    typescript中的类型兼容性
    typescript中使用泛型
    分数的乘法逆元和负数的取模运算
    pip2 install protobuf==2.6.1
    git使用代理
    Mount error(5):Input/output error on mount
    cmake 学习笔记(一)
    cmake --help
    ImportError: dynamic module does not define init function (initcaffe)
    docker
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/902448.html
Copyright © 2011-2022 走看看