首页 > 编程 > C# > 正文

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

2020-01-24 00:19:57
字体:
来源:转载
供稿:网友

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文件解压的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表