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

作者:農碼一生 时间:2021-06-12 16:12:48 

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;
   }

来源:https://www.cnblogs.com/wml-it/p/12148778.html

标签:c#,7z,压缩,解压
0
投稿

猜你喜欢

  • Java回调函数与观察者模式实例代码

    2023-11-16 17:30:11
  • Springboot整合MongoDB进行CRUD操作的两种方式(实例代码详解)

    2021-12-16 18:29:04
  • JS+Struts2多文件上传实例详解

    2022-02-18 21:08:02
  • MyBatis自定义类型转换器实现加解密

    2023-09-10 20:18:00
  • java实现图片转base64字符串 java实现base64字符串转图片

    2023-07-19 10:42:44
  • Java多线程Thread类的使用详解

    2023-11-11 13:08:11
  • C#异步调用示例详解

    2023-09-12 13:02:04
  • Android布局自定义Shap圆形ImageView可以单独设置背景与图片

    2023-02-23 15:15:35
  • C#环形队列的实现方法详解

    2021-06-04 00:38:37
  • 在IDEA里gradle配置和使用的方法步骤

    2023-11-23 16:07:58
  • android编程实现对话框的封装实例

    2022-02-12 12:58:54
  • Java通过Fork/Join优化并行计算

    2023-01-27 21:28:36
  • java状态机方案解决订单状态扭转示例详解

    2022-01-10 02:55:43
  • C#将Sql数据保存到Excel文件中的方法

    2023-11-11 08:34:26
  • Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍

    2021-10-11 00:51:28
  • java实现日期拆分的方法

    2023-06-19 00:28:59
  • Java中的访问修饰符详细解析

    2022-01-18 17:23:02
  • Java实现简易Web服务器

    2023-11-17 09:10:11
  • Java超详细讲解三大特性之一的多态

    2022-03-17 02:11:45
  • Android使用onCreateOptionsMenu()创建菜单Menu的方法详解

    2023-05-13 06:21:01
  • asp之家 软件编程 m.aspxhome.com