C#调用WinRar执行rar、zip压缩的方法

 更新时间:2015年05月13日 10:42:39   作者:令狐不聪  
这篇文章主要介绍了C#调用WinRar执行rar、zip压缩的方法,涉及C#针对winrar的判断与调用技巧,需要的朋友可以参考下

本文实例讲述了C#调用WinRar执行rar、zip压缩的方法。分享给大家供大家参考。具体如下:

判断系统是否安装了winrar

/// <summary>
/// 验证WinRar是否安装。
/// </summary>
/// <returns>true:已安装,false:未安装</returns>
private static bool ExistsRar(out String winRarPath)
{
 winRarPath = String.Empty;
 //通过Regedit(注册表)找到WinRar文件
 var registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
 if (registryKey == null) return false;//未安装
 //registryKey = theReg;可以直接返回Registry对象供会面操作
 winRarPath = registryKey.GetValue("").ToString();
 //这里为节约资源,直接返回路径,反正下面也没用到
 registryKey.Close();//关闭注册表
 return !String.IsNullOrEmpty(winRarPath);
}

压缩

/// <summary>
/// 生成Zip
/// </summary>
/// <param name="path">文件夹路径</param>
/// <param name="rarPath">生成压缩文件的路径</param>
/// <param name="rarName">生成压缩文件的文件名</param>
public static void CompressRar(String path, String rarPath, String rarName)
{
 try
 {
  String winRarPath = null;
  if (!ExistsRar(out winRarPath)) return;
  //验证WinRar是否安装。
  var pathInfo = String.Format("a -afzip -m0 -ep1 \"{0}\" \"{1}\"", rarName, path);
  #region WinRar 用到的命令注释
  //[a] 添加到压缩文件
  //afzip 执行zip压缩方式,方便用户在不同环境下使用。
  //(取消该参数则执行rar压缩)
  //-m0 存储 添加到压缩文件时不压缩文件。共6个级别【0-5】,值越大效果越好,也越慢
  //ep1 依名称排除主目录(生成的压缩文件不会出现不必要的层级)
  //r 修复压缩档案
  //t 测试压缩档案内的文件
  //as 同步压缩档案内容 
  //-p 给压缩文件加密码方式为:-p123456
  #endregion
  //打包文件存放目录
  var process = new Process
  {
   StartInfo = new ProcessStartInfo
   {
   FileName = winRarPath,//执行的文件名
   Arguments = pathInfo,//需要执行的命令
   UseShellExecute = false,//使用Shell执行
   WindowStyle = ProcessWindowStyle.Hidden,//隐藏窗体
   WorkingDirectory = rarPath,//rar 存放位置
   CreateNoWindow = false,//不显示窗体
   },
  };
  process.Start();//开始执行
  process.WaitForExit();//等待完成并退出
  process.Close();//关闭调用 cmd 的什么什么
 }
 catch (Exception ex)
 {
  throw ex;
 }
}

解压

/// <summary>
/// 解压
/// </summary>
/// <param name="unRarPath">文件夹路径</param>
/// <param name="rarPath">压缩文件的路径</param>
/// <param name="rarName">压缩文件的文件名</param>
/// <returns></returns>
public static String UnCompressRar(String unRarPath, String rarPath, String rarName)
{
 try
 {
  String winRarPath = null;
  if (!ExistsRar(out winRarPath)) return "";
  //验证WinRar是否安装。
  if (Directory.Exists(unRarPath) == false)
  {
   Directory.CreateDirectory(unRarPath);
  }
  var pathInfo = "x " + rarName + " " + unRarPath + " -y";
  var process = new Process
  {
   StartInfo = new ProcessStartInfo
   {
   FileName = winRarPath,//执行的文件名
   Arguments = pathInfo,//需要执行的命令
   UseShellExecute = false,//使用Shell执行
   WindowStyle = ProcessWindowStyle.Hidden,//隐藏窗体
   WorkingDirectory = rarPath,//rar 存放位置
   CreateNoWindow = false,//不显示窗体
   },
  };
  process.Start();//开始执行
  process.WaitForExit();//等待完成并退出
  process.Close();//关闭调用 cmd 的什么什么
 }
 catch (Exception ex)
 {
  throw ex;
 }
 return unRarPath;
}

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • C#实现将聊天数据发送加密

    C#实现将聊天数据发送加密

    这篇文章主要为大家详细介绍了如何利用C#实现将聊天数据发送加密的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • Unity实现引导页效果

    Unity实现引导页效果

    这篇文章主要为大家详细介绍了Unity实现引导页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#实现的Win32控制台线程计时器功能示例

    C#实现的Win32控制台线程计时器功能示例

    这篇文章主要介绍了C#实现的Win32控制台线程计时器功能,结合实例形式分析了C#基于控制台的时间操作相关技巧,需要的朋友可以参考下
    2016-08-08
  • C#命令模式用法实例

    C#命令模式用法实例

    这篇文章主要介绍了C#命令模式用法,以实例形式较为详细的分析了C#命令模式的功能、定义及使用技巧,需要的朋友可以参考下
    2015-07-07
  • 详解C#编程获取资源文件中图片的方法

    详解C#编程获取资源文件中图片的方法

    这篇文章主要介绍了详解C#编程获取资源文件中图片的方法的相关资料,需要的朋友可以参考下
    2017-06-06
  • C# yield在WCF中的错误用法(一)

    C# yield在WCF中的错误用法(一)

    这篇文章主要介绍了C# yield在WCF中的错误使用(一),本文讲解的内容据说是99%的开发人员都有可能犯的错误,需要的朋友可以参考下
    2015-04-04
  • C# Char结构中IsLetterOrDigit(Char)的方法详解

    C# Char结构中IsLetterOrDigit(Char)的方法详解

    这篇文章给大家介绍了C#的Char 结构的IsLetterOrDigit(Char)的方法,并通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • C#隐式/显示实现接口方法详解

    C#隐式/显示实现接口方法详解

    这篇文章主要为大家详细介绍了C#隐式/显示实现接口方法,接口的使用场景介绍,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • c# 动态加载dll文件,并实现调用其中的简单方法

    c# 动态加载dll文件,并实现调用其中的简单方法

    下面小编就为大家带来一篇c# 动态加载dll文件,并实现调用其中的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 使用代理模式来进行C#设计模式开发的基础教程

    使用代理模式来进行C#设计模式开发的基础教程

    这篇文章主要介绍了使用代理模式来进行C#设计模式开发的基础教程,代理模式主张在客户端和目标对象中间建立中介来降低程序设计的耦合度,需要的朋友可以参考下
    2016-02-02

最新评论