好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

c# 文件压缩zip或将zip文件解压的方法

1.必须Dll:

ICSharpCode.SharpZipLib.dll。可从Nutget程序包中获取。

2.压缩文件

?

/// < summary >

/// 压缩文件成zip

/// </ summary >

/// < param name = "fileZip" >压缩成zip文件的绝对路径</ param >

/// < param name = "fileName" >被压缩指定文件的名字</ param >

/// < param name = "zipFilePath" ></ param >

/// < returns ></ returns >

public bool CreateZipFile(string fileZip,string fileName, string zipFilePath)

   {

    bool isZip = false;

    if (!Directory.Exists(zipFilePath))

    {

     Logger.Info($"Cannot find directory {zipFilePath}", false, "FileToZip");

     return isZip;

    }

    try

    {

     string[] filenames = Directory.GetFiles(zipFilePath);

     using (ZipOutputStream s = new ZipOutputStream(File.Create(fileZip)))

     {

      s.SetLevel(9); // 压缩级别 0-9

      //s.Password = "123"; //Zip压缩文件密码

      byte[] buffer = new byte[4096]; //缓冲区大小

      foreach (string file in filenames.ToList())

      {

       if (file== zipFilePath+fileName)//指定被压缩文件的绝对路径

       {

        ZipEntry entry = new ZipEntry(Path.GetFileName(file));

        entry.DateTime = DateTime.Now;

        s.PutNextEntry(entry);

        using (FileStream fs = File.OpenRead(file))

        {

         int sourceBytes;

         do

         {

          sourceBytes = fs.Read(buffer, 0, buffer.Length);

          s.Write(buffer, 0, sourceBytes);

         } while (sourceBytes > 0);

         fs.Close();

         fs.Dispose();

        }

        break;

       }

      }

      s.Finish();

      s.Close();

      isZip = true;

     }

    }

    catch (Exception ex)

    {

     Logger.Info($"Exception during processing {0}", false, "FileToZip");

    }

    return isZip;

   }

3.将zip文件解压

?

/// < summary >

/// 解压文件

/// </ summary >

/// < param name = "zipFilePath" >压缩文件的绝对路径</ param >

  public void UnZipFile(string zipFilePath)

   {

    if (!File.Exists(zipFilePath))

    {

     Logger.Info($"Cannot find file {zipFilePath}", false, "FileToZip");

     return;

    }

    using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))

    {

     ZipEntry theEntry;

     while ((theEntry = s.GetNextEntry()) != null)

     {

      string directoryName = Path.GetDirectoryName(theEntry.Name);

      string fileName = Path.GetFileName(theEntry.Name);

      // create directory

      if (directoryName?.Length > 0)

      {

       Directory.CreateDirectory(directoryName);

      }

      if (!string.IsNullOrEmpty(fileName))

      {

       using (FileStream streamWriter = File.Create(theEntry.Name))

       {

        int size = 2048;

        byte[] data = new byte[2048];

        while (true)

        {

         size = s.Read(data, 0, data.Length);

         if (size > 0)

         {

          streamWriter.Write(data, 0, size);

         }

         else

         {

          break;

         }

        }

       }

      }

     }

    }

   }

4.其它:其中的Logger是Log4的用法。

以上这篇c# 文件压缩zip或将zip文件解压的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/FeiJrry/article/details/79101368

dy("nrwz");

查看更多关于c# 文件压缩zip或将zip文件解压的方法的详细内容...

  阅读:42次