栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

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

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

1.必须Dll:

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

2.压缩文件

/// 
/// 压缩文件成zip
/// 
/// 压缩成zip文件的绝对路径
/// 被压缩指定文件的名字
/// 
/// 
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文件解压

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/123000.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号