C#调用7z实现文件的压缩与解压

 更新时间:2020年12月07日 11:06:14   作者:農碼一生  
这篇文章主要介绍了C#调用7z实现文件的压缩与解压,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下

1.关于7z

首先在这里先介绍一下7z压缩软件,7z是一种主流的 压缩格式,它拥有极高的压缩比。在计算机科学中,7z是一种可以使用多种压缩算法进行数据压缩的档案格式。主要有以下特点:

  • 来源且模块化的组件结构
  • 最高的压缩比
  • 强大的AES-256加密
  • 可更改配置的压缩算法
  • 支持操大文件
  • 支持多线程压缩
  • 具有多种压缩文件格式

2.解压缩实现代码

实现对文件的解压缩方法是通过cmd命令,调用7z程式通过cmd命令实现对文件进行解压和压缩的操作,具体实现代码如下:

  • 压缩代码

压缩的cmd命令:"7Z a -tzip " + zipPath + "  " + filePath;

public ExecutionResult CompressFile(string filePath, string zipPath)//运行DOS命令
    {
      ExecutionResult exeRes = new ExecutionResult();
      exeRes.Status = true;
      try
      {
        Process process = new Process();
        process.StartInfo.FileName = "cmd.exe";
        string message = "";
        string command1 = "c:";
        string command2 = @"cd\";
        string command3 = @"cd C:\Progra~1\7-Zip";
        string command4 = "";


        command4 = "7Z a -tzip " + zipPath + " " + filePath;

        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardInput = true;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.CreateNoWindow = true;
        process.Start();
        process.StandardInput.WriteLine(command1);
        process.StandardInput.WriteLine(command2);
        process.StandardInput.WriteLine(command3);
        process.StandardInput.WriteLine(command4);
        process.StandardInput.WriteLine("exit");
        message = process.StandardOutput.ReadToEnd(); //要等压缩完成后才可以来抓取这个压缩文件

        process.Close();
        if (!message.Contains("Everything is Ok"))
        {
          exeRes.Status = false;
          exeRes.Message = message;
        }
        else
        {
          exeRes.Anything = zipPath;
        }
      }
      catch (Exception ex)
      {
        exeRes.Message = ex.Message;
      }

      return exeRes;
    }
  • 解压代码

解压的cmd命令:"7Z x -tzip " + zipPath + " -o" + filePath + " -y";

public ExecutionResult DeCompressFile( string zipPath, string filePath)//运行DOS命令
    {
      ExecutionResult exeRes = new ExecutionResult();
      exeRes.Status = true;
      try
      {
        Process process = new Process();
        process.StartInfo.FileName = "cmd.exe";
        string message = "";
        string command1 = "c:";
        string command2 = @"cd\";
        string command3 = @"cd C:\Progra~1\7-Zip";
        string command4 = "";


        command4 = "7Z x -tzip " + zipPath + " -o" + filePath + " -y";

        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardInput = true;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.CreateNoWindow = true;
        process.Start();
        process.StandardInput.WriteLine(command1);
        process.StandardInput.WriteLine(command2);
        process.StandardInput.WriteLine(command3);
        process.StandardInput.WriteLine(command4);
        process.StandardInput.WriteLine("exit");
        //process.WaitForExit();
        message = process.StandardOutput.ReadToEnd();//要等压缩完成后才可以来抓取这个压缩文件

        process.Close();
        if (!message.Contains("Everything is Ok"))
        {
          exeRes.Status = false;
          exeRes.Message = message;
        }
        else
        {
          exeRes.Anything = filePath;
        }
      }
      catch (Exception ex)
      {
        exeRes.Message = ex.Message;
      }

      return exeRes;
    }

以上就是C#调用7z实现文件的压缩与解压的详细内容,更多关于c# 文件压缩与解压的资料请关注脚本之家其它相关文章!

相关文章

  • C#线性渐变画刷LinearGradientBrush用法实例

    C#线性渐变画刷LinearGradientBrush用法实例

    这篇文章主要介绍了C#线性渐变画刷LinearGradientBrush用法,实例分析了线性渐变画刷LinearGradientBrush的相关使用技巧,需要的朋友可以参考下
    2015-06-06
  • C#基于UDP进行异步通信的方法

    C#基于UDP进行异步通信的方法

    这篇文章主要介绍了C#基于UDP进行异步通信的方法,实例分析了C#基于UDP实现异步通信的相关技巧,需要的朋友可以参考下
    2015-04-04
  • C#如何实现对sql server数据库的增删改查

    C#如何实现对sql server数据库的增删改查

    本文的主要内容是C#实现对sql server数据库的增删改查,示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • C#写日志类实例

    C#写日志类实例

    这篇文章主要介绍了C#写日志类,实现将日志信息写入文本文件的功能,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • C#中LINQ to Objects查询的实现

    C#中LINQ to Objects查询的实现

    LINQ to Objects是LINQ技术在C#中的一种应用,它专门用于对内存中的对象集合进行查询和操作,本文就详细的介绍C#中LINQ to Objects查询的实现,感兴趣的可以了解一下
    2023-08-08
  • C#实现基于XML配置MenuStrip菜单的方法

    C#实现基于XML配置MenuStrip菜单的方法

    这篇文章主要介绍了C#实现基于XML配置MenuStrip菜单的方法,涉及C#使用XML配置MenuStrip菜单的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C# TaskScheduler任务调度器的实现

    C# TaskScheduler任务调度器的实现

    本文主要介绍了C# TaskScheduler任务调度器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2023-05-05
  • 深入了解c# 设计模式之简单工厂模式

    深入了解c# 设计模式之简单工厂模式

    这篇文章主要介绍了c# 设计模式之简单工厂模式的的相关资料,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C# Winform实现波浪滚动效果

    C# Winform实现波浪滚动效果

    这篇文章主要为大家详细介绍了C# Winform实现波浪滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • c#中使用BackgroundWorker的实现

    c#中使用BackgroundWorker的实现

    本文主要介绍了c#中使用BackgroundWorker的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论