加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 05:43:26 所属栏目:百科 来源:网络整理
导读:1.必须Dll: ICSharpCode.SharpZipLib.dll。可从Nutget程序包中获

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,buffer.Length);
         s.Write(buffer,sourceBytes);
        } while (sourceBytes > 0);
        fs.Close();
        fs.Dispose();
       }
       break;
      }
     }
     s.Finish();
     s.Close();
     isZip = true;
    }
   }
   catch (Exception ex)
   {
    Logger.Info($"Exception during processing {0}","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}","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,data.Length);
        if (size > 0)
        {
         streamWriter.Write(data,size);
        }
        else
        {
         break;
        }
       }
      }
     }
    }
   }
  }

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

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

您可能感兴趣的文章:

  • C#实现文件压缩与解压的方法示例【ZIP格式】
  • C#实现压缩和解压缩的方法示例【Gzip和Zip方式】
  • C#实现的文件压缩和解压缩类
  • C#实现rar压缩与解压缩文件的方法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读