C# 客户端rar/zip文件解压缩

说明:

(1)下载winrar.exe,安装到指定路径,例如:D:\WINRAR,之后把安装的文件夹(D:\WINRAR)拷贝到应用程序根目录;

(2)具体方法如下(注意方法中的路径):

 

/// <summary>
        /// 解压RAR和ZIP文件(需存在Winrar.exe(项目根目录存在 winrar.exe)
        /// </summary>
        /// <param name="pathRar">压缩文件绝对路径(包括文件名称)</param>
        /// <param name="deDir">解压目录</param>
        /// <param name="errInfo">异常信息</param>
        /// <param name="pwd">解压密码</param>
        /// <param name="isCover">所解压的文件是否会覆盖已存在的文件(如果不覆盖,所解压出的文件和已存在的相同名称文件不会共同存在,只保留原已存在文件)</param>
        /// <returns>true(解压成功);false(解压失败)</returns>
        public static bool DeCompressRarOrZip(string pathRar, string deDir, out string errInfo, string pwd = "", bool isCover = true)
        {
            errInfo = "";
            try
            {
                if (!Directory.Exists(deDir))
                    Directory.CreateDirectory(deDir);

                StringBuilder sb = new StringBuilder();
                sb.Append(" x");
                if (!string.IsNullOrWhiteSpace(pwd))
                    sb.Append($" -p{pwd}");
                sb.Append(isCover ? " -o+" : " -o-");
                sb.Append($" \"{pathRar}\"");
                sb.Append($" \"{deDir}\"");
                sb.Append(" -y");

                string winRarPath = $@"{AppDomain.CurrentDomain.BaseDirectory}Winrar\WinRAR.exe";
                using (Process pro = new Process())
                {
                    ProcessStartInfo psInfo = new ProcessStartInfo
                    {
                        //重定向输入(一定是true) 
                        RedirectStandardInput = true,
                        //重定向输出  
                        RedirectStandardOutput = true,
                        RedirectStandardError = true,

                        //不使用系统shell外壳程序启动
                        UseShellExecute = false,
                        //EXE路径
                        FileName = winRarPath,
                        //命令
                        Arguments = sb.ToString(),
                        //不创建窗体
                        CreateNoWindow = true,
                        WindowStyle = ProcessWindowStyle.Hidden
                    };

                    pro.StartInfo = psInfo;
                    pro.Start();
                    pro.WaitForExit();

                    int code = pro.ExitCode;
                    return code == 0;
                }
            }
            catch (Exception ex)
            {
                errInfo = $"解压失败。\r\n详细信息:{ ex.Message}";
                return false;
            }

        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值