虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C#编程 > c# 文件压缩zip或将zip文件解压的方法

c# 文件压缩zip或将zip文件解压的方法
类别:C#编程   作者:码皇   来源:互联网   点击:

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

您可能感兴趣的文章:

  • C#实现文件压缩与解压的方法示例【ZIP格式】
  • C#实现压缩和解压缩的方法示例【Gzip和Zip方式】
  • C#实现的文件压缩和解压缩类
  • C#实现rar压缩与解压缩文件的方法
相关热词搜索: zip文件压缩