首页 > 编程语言 >C# 调用Winrar.exe压缩文件

C# 调用Winrar.exe压缩文件

时间:2022-10-03 23:13:28浏览次数:46  
标签:return string C# 压缩文件 sourcePath winRarPro Winrar errMsg

1、封装

 /// <summary>
        /// 调用Winrar.exe进行压缩文件
        /// </summary>
        /// <param name="sourcePath">需要压缩文件路径</param>
        /// <param name="rarPath">压缩文件路径</param>
        /// <param name="isDeleteFile">压缩成功是否删除源文件</param>
        /// <param name="errMsg">压缩失败异常原因</param>
        /// <returns></returns>
        public static bool GetRAR(string sourcePath, string rarPath, bool isDeleteFile, out string errMsg)
        {
            errMsg = string.Empty;
            System.Diagnostics.Process winRarPro = new System.Diagnostics.Process();
            try
            {
                //通过Regedit(注册表)找到WinRar文件
                var registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
                if (registryKey == null)
                {
                    errMsg = $"未安装WinRar软件";
                    return false;
                }
                //获取winRar路径
                string winRarPath = registryKey.GetValue("")?.ToString();
                //关闭注册表
                registryKey.Close();
                winRarPro.StartInfo.FileName = winRarPath;
                //是否创建一个线程
                winRarPro.StartInfo.CreateNoWindow = true;
                if (!System.IO.File.Exists(sourcePath))
                {
                    errMsg = $"需要压缩的文件不存在;{sourcePath}";
                    return false;
                }
                winRarPro.StartInfo.Arguments = " a -ep " + rarPath + " " + sourcePath;
                winRarPro.Start();
                //等待压缩时间(单位毫秒)
                winRarPro.WaitForExit(50000);
                //删除临时文件
                if (isDeleteFile == true)
                {
                    System.IO.File.Delete(sourcePath);
                }
                return true;
            }
            catch (Exception ex)
            {
                errMsg = $"压缩失败;{ex.Message};{ex.ToString()}";
                return false;
            }
            finally
            {
                winRarPro?.Close();
                winRarPro?.Dispose();
            }
        }

调用测试

 string msg = string.Empty;
            string sourceFilePath = "D:\\日志\\1.xls";
            string compressedFilePathName = "D:\\日志\\1.rar";
            GetRAR(sourceFilePath, compressedFilePathName, false, out msg);

 

标签:return,string,C#,压缩文件,sourcePath,winRarPro,Winrar,errMsg
From: https://www.cnblogs.com/yuanshuo/p/16751529.html

相关文章

  • vscode插件REST Client,替代postman
    如果只是简单的请求工作的话,这个插件也许跟方便使用方式准备工作安装该插件创建一个test.http(名字随意,后缀.http)文件朴素的请求后面必须有协议版本号HTTP/1.1......
  • switch选择结构
    //switch选择结构packagecom.HuanXin.JiBen_JieGou;publicclassDemo06_switch{publicstaticvoidmain(String[]args){StringDengJi="B";swit......
  • RISC-V指令精讲(一):算术指令实现与调试
    本节来看下RV32I(32位整数指令集)的算数指令,先学习下加减指令(add、sub),接着了解下数值比较指令(slt),这些指令都有两个版本:一个是立即数版本,一个是寄存器版本RISCV-V指令......
  • 一键安装Cisco AnyConnect Secure Mobility Client
    Mac版本背景:公司内部安装此VPN软件的时候,因默认是安装了所有模块,但我们只需要vpn模块,所产生的干扰。并且有人因不熟悉Macpkg软件的卸载方法导致非正常卸载,导致重新安装也......
  • hacknet游戏记录-安装
    最近发现hacknet这款游戏很不错,满足我的黑客梦。哈哈……游戏思路:这款游戏对性能要求不高。为了保障意外情况就弄个虚拟机以便随时保存“进度”虚机:4C8G60Gwin10,因为游戏......
  • CVPR2018关键字分析生成词云图与查找
    今日目标:爬取CVPR2018论文,进行分析总结出提到最多的关键字,生成wordCloud词云图展示,并且设置点击后出现对应的论文以及链接对任务进行分解:①爬取CVPR2018的标题,简介,关键字,论......
  • jemter-plugins-maven dependency -WIiki用法配置介绍
    1、先介绍下jmeter的maven中央仓库地址,有兴趣自己看下​​https://mvnrepository.com/artifact/org.apache.jmeter​​2.Wikigithub项目介绍:项目地址:​​https://github.c......
  • linux grpc测试基于ghz工具
    1.测试前提,参考先熟悉grpc测试demo:参考官网:python实现grpcclient以及service:​​https://grpc.io/docs/quickstart/python/​​java实现client和service:https://grpc......
  • docker安装influxdb命令
    1、下载influxdbdockerpullinfluxdb:1.82、运行docker容器dockerrun-d-p8083:8083-p8086:8086--name=jmeterdbinfluxdb:1.8 3、进入influx;    ......
  • cpu,disk,mem 针对用户限制使用率
    Cgroup限制用户的CPU、内存和磁盘IO使用率由jues提交于2019/07/04-10:25周四标签​​软件平台​​​​Cgroup​​​​Linux​​内容昨天使用Linux系统,不小心操作导......