c# rar压缩解压缩

此程序利用 WinRAR 程序对文件进行压缩,命令行语法可参考WinRAR中文帮助。

Code
/// <summary>
        /// 利用 WinRAR 进行压缩
        /// </summary>
        /// <param name="path">将要被压缩的文件夹(绝对路径)</param>
        /// <param name="rarPath">压缩后的 .rar 的存放目录(绝对路径)</param>
        /// <param name="rarName">压缩文件的名称(包括后缀)</param>
        /// <returns>true 或 false。压缩成功返回 true,反之,false。</returns>
        public bool RAR(string path, string rarPath, string rarName)
         {
            bool flag = false;
            string rarexe;       //WinRAR.exe 的完整路径
             RegistryKey regkey;  //注册表键
             Object regvalue;     //键值
            string cmd;          //WinRAR 命令参数
             ProcessStartInfo startinfo;
             Process process;
            try
             {
                 regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");
                 regvalue = regkey.GetValue("");  // 键值为 "d:\Program Files\WinRAR\WinRAR.exe" "%1"
                 rarexe = regvalue.ToString();    
                 regkey.Close();
                 rarexe = rarexe.Substring(1, rarexe.Length - 7);  // d:\Program Files\WinRAR\WinRAR.exe

                 Directory.CreateDirectory(path);
                //压缩命令,相当于在要压缩的文件夹(path)上点右键->WinRAR->添加到压缩文件->输入压缩文件名(rarName)
                 cmd = string.Format("a {0} {1} -r",
                                     rarName,
                                     path);
                 startinfo = new ProcessStartInfo();
                 startinfo.FileName = rarexe;
                 startinfo.Arguments = cmd;                          //设置命令参数
                 startinfo.WindowStyle = ProcessWindowStyle.Hidden;  //隐藏 WinRAR 窗口

                 startinfo.WorkingDirectory = rarPath;
                 process = new Process();
                 process.StartInfo = startinfo;
                 process.Start();
                 process.WaitForExit(); //无限期等待进程 winrar.exe 退出
                if (process.HasExited)
                 {
                     flag = true;
                 }
                 process.Close();
             }
            catch (Exception e)
             {
                throw e;
             }
            return flag;
         }
        /// <summary>
        /// 利用 WinRAR 进行解压缩
        /// </summary>
        /// <param name="path">文件解压路径(绝对)</param>
        /// <param name="rarPath">将要解压缩的 .rar 文件的存放目录(绝对路径)</param>
        /// <param name="rarName">将要解压缩的 .rar 文件名(包括后缀)</param>
        /// <returns>true 或 false。解压缩成功返回 true,反之,false。</returns>
        public bool UnRAR(string path, string rarPath, string rarName)
         {
            bool flag = false;
            string rarexe;
             RegistryKey regkey;
             Object regvalue;
            string cmd;
             ProcessStartInfo startinfo;
             Process process;
            try
             {
                 regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");
                 regvalue = regkey.GetValue("");
                 rarexe = regvalue.ToString();
                 regkey.Close();
                 rarexe = rarexe.Substring(1, rarexe.Length - 7);

                 Directory.CreateDirectory(path);
                //解压缩命令,相当于在要压缩文件(rarName)上点右键->WinRAR->解压到当前文件夹
                 cmd = string.Format("x {0} {1} -y",
                                     rarName,
                                     path);
                 startinfo = new ProcessStartInfo();
                 startinfo.FileName = rarexe;
                 startinfo.Arguments = cmd;
                 startinfo.WindowStyle = ProcessWindowStyle.Hidden;

                 startinfo.WorkingDirectory = rarPath;
                 process = new Process();
                 process.StartInfo = startinfo;
                 process.Start();
                 process.WaitForExit();
                if (process.HasExited)
                 {
                     flag = true;
                 }
                 process.Close();
             }
            catch (Exception e)
             {
                throw e;
             }
            return flag;
         }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值