WinRAR 解压缩

1.解压缩

没有发现修改解压缩后文件的名字方法,间接方法用 Directory.Move(filePath, newFilePath);

  /// <summary>
        
/// 利用 WinRAR 进行解压缩
        
/// </summary>
        
/// <param name="rarSourceDir">解压文件地址目录</param>
        
/// <param name="rarSaveDir">将要解压缩的 .rar 文件的存放目录(绝对路径)</param>
        
/// <param name="rarName">将要解压缩的 .rar 文件名(包括后缀)</param>
        
/// <param name="password">解压密码</param>
        
/// <returns>true 或 false。解压缩成功返回 true,反之,false。</returns>
        public static bool UnCompressRAR(string rarSourceDir, string rarSaveDir, string rarName,string password)
        {
            
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);
                
if (!Directory.Exists(rarSaveDir))
                {
                    Directory.CreateDirectory(rarSaveDir);
                }
                
//解压缩命令,相当于在要压缩文件(rarName)上点右键 ->WinRAR->解压到当前文件夹
                if (password!= "")
                {                 
                    cmd 
= string.Format("x -p{0} {1} {2}  -y", password, rarName, rarSaveDir);
                }
                
else
                {
                    cmd 
= string.Format("x {0} {1} -y", rarName, rarSaveDir);
                
                }
                startinfo 
= new ProcessStartInfo();
                startinfo.FileName 
= rarExe;
                startinfo.Arguments 
= cmd;
                startinfo.WindowStyle 
= ProcessWindowStyle.Hidden;
                startinfo.WorkingDirectory 
= rarSourceDir;
                process 
= new Process();
                process.StartInfo 
= startinfo;
                process.Start();
                process.WaitForExit();
                
if (process.HasExited)
                {
                    flag 
= true;
                }
                process.Close();
            }
            
catch (Exception e)
            {
                
throw e;
            }
            
return flag;
        }

 

转载于:https://www.cnblogs.com/ike_li/archive/2011/05/24/2055453.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值