C#调用WinRar执行rar、zip压缩的方法
本文实例讲述了C#调用WinRar执行rar、zip压缩的方法。分享给大家供大家参考。具体如下:
判断系统是否安装了winrar
///<summary> ///验证WinRar是否安装。 ///</summary> ///<returns>true:已安装,false:未安装</returns> privatestaticboolExistsRar(outStringwinRarPath) { winRarPath=String.Empty; //通过Regedit(注册表)找到WinRar文件 varregistryKey=Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\WinRAR.exe"); if(registryKey==null)returnfalse;//未安装 //registryKey=theReg;可以直接返回Registry对象供会面操作 winRarPath=registryKey.GetValue("").ToString(); //这里为节约资源,直接返回路径,反正下面也没用到 registryKey.Close();//关闭注册表 return!String.IsNullOrEmpty(winRarPath); }
压缩
///<summary> ///生成Zip ///</summary> ///<paramname="path">文件夹路径</param> ///<paramname="rarPath">生成压缩文件的路径</param> ///<paramname="rarName">生成压缩文件的文件名</param> publicstaticvoidCompressRar(Stringpath,StringrarPath,StringrarName) { try { StringwinRarPath=null; if(!ExistsRar(outwinRarPath))return; //验证WinRar是否安装。 varpathInfo=String.Format("a-afzip-m0-ep1\"{0}\"\"{1}\"",rarName,path); #regionWinRar用到的命令注释 //[a]添加到压缩文件 //afzip执行zip压缩方式,方便用户在不同环境下使用。 //(取消该参数则执行rar压缩) //-m0存储添加到压缩文件时不压缩文件。共6个级别【0-5】,值越大效果越好,也越慢 //ep1依名称排除主目录(生成的压缩文件不会出现不必要的层级) //r修复压缩档案 //t测试压缩档案内的文件 //as同步压缩档案内容 //-p给压缩文件加密码方式为:-p123456 #endregion //打包文件存放目录 varprocess=newProcess { StartInfo=newProcessStartInfo { FileName=winRarPath,//执行的文件名 Arguments=pathInfo,//需要执行的命令 UseShellExecute=false,//使用Shell执行 WindowStyle=ProcessWindowStyle.Hidden,//隐藏窗体 WorkingDirectory=rarPath,//rar存放位置 CreateNoWindow=false,//不显示窗体 }, }; process.Start();//开始执行 process.WaitForExit();//等待完成并退出 process.Close();//关闭调用cmd的什么什么 } catch(Exceptionex) { throwex; } }
解压
///<summary> ///解压 ///</summary> ///<paramname="unRarPath">文件夹路径</param> ///<paramname="rarPath">压缩文件的路径</param> ///<paramname="rarName">压缩文件的文件名</param> ///<returns></returns> publicstaticStringUnCompressRar(StringunRarPath,StringrarPath,StringrarName) { try { StringwinRarPath=null; if(!ExistsRar(outwinRarPath))return""; //验证WinRar是否安装。 if(Directory.Exists(unRarPath)==false) { Directory.CreateDirectory(unRarPath); } varpathInfo="x"+rarName+""+unRarPath+"-y"; varprocess=newProcess { StartInfo=newProcessStartInfo { FileName=winRarPath,//执行的文件名 Arguments=pathInfo,//需要执行的命令 UseShellExecute=false,//使用Shell执行 WindowStyle=ProcessWindowStyle.Hidden,//隐藏窗体 WorkingDirectory=rarPath,//rar存放位置 CreateNoWindow=false,//不显示窗体 }, }; process.Start();//开始执行 process.WaitForExit();//等待完成并退出 process.Close();//关闭调用cmd的什么什么 } catch(Exceptionex) { throwex; } returnunRarPath; }
希望本文所述对大家的C#程序设计有所帮助。