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#程序设计有所帮助。