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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值