zoukankan      html  css  js  c++  java
  • C#调用7z实现文件的压缩与解压

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

    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~17-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~17-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;
            }
     
  • 相关阅读:
    Android ArrayAdapter使用
    Android 更改字体
    C# CRC16校验码 1.0
    获取当前主题颜色 Flutter
    C# 每个字节接受 处理串口数据 的方法
    C# CRC
    char* 与 string 互转
    typeof 子类获取父类
    flutter Row 垂直或水平放置多个widget
    flutter 容器 几种写法
  • 原文地址:https://www.cnblogs.com/wml-it/p/12148778.html
Copyright © 2011-2022 走看看