• 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;
            }
     
  • 相关阅读:
    010-SaltStack及SaltStack Web UI安装部署
    004-linux下配置rsyslog日志收集服务器案例 rsyslog+loganalyzer日志服务器,无法添加报表模板解决
    003-centos7:rsyslog简单配置客户端和服务器端
    002-loganalyzer装完报错no syslog records found
    001-CentOS 7系统搭建Rsyslog+LogAnalyzer解决交换机日志收
    009(1)-saltstack之salt-ssh的使用及配置管理LAMP状态的实现
    009-saltstack之salt-ssh的使用及配置管理LAMP状态的实现
    008-saltstack之salt-ssh
    CentOS7+ 普通用户使用密钥登陆服务器(同时禁用root登陆)
    jq如何判断是否存在某个指定的style样式
  • 原文地址:https://www.cnblogs.com/wml-it/p/12148778.html
Copyright © 2020-2023  润新知