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
投稿

猜你喜欢

  • C#读取word中表格数据的方法实现

    2023-09-12 22:54:53
  • WCF实现进程间管道通信Demo分享

    2022-10-22 04:20:06
  • Java 实现判定顺序表中是否包含某个元素(思路详解)

    2023-09-11 01:03:04
  • java oshi如何查看cpu信息

    2023-01-06 21:16:39
  • 解决C#获取鼠标相对当前窗口坐标的实现方法

    2022-10-07 12:57:57
  • java(包括springboot)读取resources下文件方式实现

    2021-06-03 20:16:06
  • ComposeDesktop开发桌面端多功能APK工具

    2022-02-11 16:57:04
  • kotlin java 混合代码 maven 打包实现

    2023-04-09 13:33:41
  • Java for循环标签跳转到指定位置的示例详解

    2022-10-04 17:52:31
  • 解决mybatis三表连接查询数据重复的问题

    2023-09-13 15:24:25
  • Unity实现图形相交检测

    2021-09-16 09:31:01
  • C#基于QRCode实现动态生成自定义二维码图片功能示例

    2023-04-03 04:08:43
  • C语言中队列的结构和函数接口的使用示例

    2022-01-08 06:56:40
  • 详解Spring Data Jpa当属性为Null也更新的完美解决方案

    2022-04-13 03:06:06
  • Springboot Mybatis Plus自动生成工具类详解代码

    2022-09-17 12:01:57
  • 深入解析C#设计模式中对桥接模式的具体运用

    2023-11-08 21:53:06
  • java导出数据库的全部表到excel

    2023-11-25 09:38:33
  • Java如何跳出当前多重循环你知道吗

    2022-12-17 02:22:17
  • C# Assembly.Load案例详解

    2021-11-06 03:20:33
  • 基于html5+java实现大文件上传实例代码

    2023-09-26 02:14:29
  • asp之家 软件编程 m.aspxhome.com