//-------------------------------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2016 , ZTO , Ltd .
//------------------------------------------------------------------------------------- using System;
using System.Diagnostics;
using System.IO;
using Microsoft.Win32; namespace ZTO.TestDb
{
/// <summary>
/// WinRAR压缩操作帮助类
///
/// 修改纪录
///
/// 2016-5-9 版本:1.0 YangHengLian 创建主键,注意命名空间的排序,测试非常好。
/// 2016-5-13 加上了自动获取WinRAR安装路径的函数,不管是64位还是32位系统,
///
/// 版本:1.0
///
/// <author>
/// <name>YangHengLian</name>
/// <date>2016-5-9</date>
/// </author>
/// </summary>
public class WinRarHelper
{
#region 属性
private string _winRarPath; /// <summary>
/// WinRAR安装路径,可以自己设置,默认读取系统注册表
/// </summary>
public string WinRarPath
{
get
{
return string.IsNullOrEmpty(_winRarPath) ? GetWinRarInstallPath() : _winRarPath;
}
set
{
_winRarPath = value;
}
}
#endregion /// <summary>
/// 解压到某个文件夹中
/// </summary>
/// <param name="rarFilePath">rar文件全路径</param>
/// <param name="unRarPath">解压到哪个文件夹</param>
/// <param name="password">解压密码</param>
/// <param name="isOverride">是否覆盖</param>
public void UnRar(string rarFilePath, string unRarPath, string password = null, bool isOverride = false)
{
if (IsSetUpWinRar())
{
throw new ArgumentNullException("WinRAR未安装");
}
RunCmd(string.Format("x{0} -o{1} {2} {3}", (password == null ? "" : " -p" + password), (isOverride ? "+" : "-"), rarFilePath, unRarPath));
} /// <summary>
/// 压缩文件或者文件夹为压缩包
/// </summary>
/// <param name="filePath">需要压缩的文件/文件夹全路径</param>
/// <param name="saveFilePath">压缩文件保存全路径</param>
/// <param name="isOverride">是否覆盖</param>
/// <param name="password">压缩文件密码</param>
public void Rar(string filePath, string saveFilePath, bool isOverride = false, string password = null)
{
if (IsSetUpWinRar())
{
throw new ArgumentNullException("WinRAR未安装");
}
RunCmd(string.Format("a{0} -o{1} -ep2 -r {2} {3}", (password == null ? "" : " -p" + password), (isOverride ? "+" : "-"), saveFilePath, filePath));
} /// <summary>
/// 解压是否安装了WinRAR程序
/// </summary>
/// <returns></returns>
public bool IsSetUpWinRar()
{
if (!string.IsNullOrEmpty(WinRarPath))
{
return File.Exists(WinRarPath);
}
var inistallPath = GetWinRarInstallPath();
if (string.IsNullOrEmpty(inistallPath))
{
return false;
}
WinRarPath = inistallPath;
return true;
} /// <summary>
/// 从注册表中获取WinRAR的安装路径
/// </summary>
/// <returns></returns>
public string GetWinRarInstallPath()
{
var openKey = @"SOFTWARE\Wow6432Node\WinRAR";//64位注册表
if (IntPtr.Size == )
{
openKey = @"SOFTWARE\WinRAR";//32位注册表路径
}
RegistryKey appPath = Registry.LocalMachine.OpenSubKey(openKey);
if (appPath != null)
{
// WinRAR安装具体路径
string path = appPath.GetValue("exe32").ToString();
if (File.Exists(path))
{
return path;
}
}
return null;
} /// <summary>
/// 执行rar内部命令
/// </summary>
/// <param name="cmd">要执行的命令</param>
public void RunCmd(string cmd)
{
using (var p = new Process())
{
p.StartInfo.FileName = WinRarPath;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.Arguments = cmd;
p.Start();
p.WaitForExit();
}
}
}
} WinRarHelper

WinRAR压缩操作帮助类的更多相关文章

  1. 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货

    关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...

  2. WinRarHelper帮助类

    WinRarHelper帮助类 关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩 ...

  3. 如何用C#+WinRAR 实现压缩 分类:

    前提:必须安装 WinRAR 1. 工具类 using System; using System.Diagnostics; using System.IO; using Microsoft.Win32 ...

  4. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  5. .NET 4.5 中新提供的压缩类

    Windows8 的开发已经如火如荼开始了,在 Windows8 中提供的 .NET Framework 已经更新到了 4.5 版,其中又增加了一些新的特性,对压缩文件的支持就是其中之一. 在 4.5 ...

  6. ASP.NET利用WINRar实现在线解压缩文件

    一.肯定是服务器必须装了winrar这个软件了. 二.创建Helper类,如下: using System; using System.Collections.Generic; using Syste ...

  7. WinRAR安装、破解与去除弹窗广告

    本教程教大家怎么破解WinRAR压缩软件和去除广告(教程属于总结类,总结网上给出的方法,并且亲测有效,非本人原创)WinRAR5.40 2016.10.06 首先下载WinRAR软件,去它的官方英文网 ...

  8. winrar 压缩文件方法

    问题描述: 我要一些大的文件进行压缩,看了网上有很多类拟的写法.但在我这都存在两个问题. 1.就是他们都是通过注册表找到rar的exe目录.我安装好winrar后,虽然注册表有,但那个目录一直报一个错 ...

  9. duilib入门之贴图描述、类html文本描述、动态换肤、Dll插件、资源打包

    转载自duilib入门文档 贴图描述: Duilib的表现力丰富很大程度上得益于贴图描述的简单强大.Duilib的贴图描述分为简单模式和复杂模式两种. 简单模式使用文件名做为贴图描述内容,在这种方式下 ...

随机推荐

  1. 解决Android应用安装快完毕时提示签名冲突

    最近开发了一个Android手机应用,自己用Eclipse调试安装没问题,使用其他人调试生成的bin下的apk就会出现问题,安装到最后提示"安装签名冲突"错误,想了一下估计是没有给 ...

  2. pylab,matplotlib Invalid DISPLAY variable

    在cetos 服务器使用源码包,安装matplotlib, 安装成功后, import pylab as pl pl.figure(figsize=(16,8)) python 解析器报错,Inval ...

  3. jquery的dom操作

    DOM操作 $("p").appendTo("div");把p标签追加到div标签--中--后 $("p").prependTo(" ...

  4. ajax 选项卡

    Ajax其实就是交互式网页应用开发技术包括以下几个方面: 1.XHTML和CSS 2.使用DOM作为动态显示和交互 3.使用XML和XSLT 做数据交互和操作 (这些完全不太懂) 4.使用XMLHtt ...

  5. ODBC与ADO 连SQL Server 2005

    ADO是microsoft数据库应用程序开发的连连接口,是建立在OLE DB之上的高层 ADO使用方法步骤: 1.初始化COM库,引入ADO库定义 2.用connection对象连接数据库 3.利用连 ...

  6. EF Core CodeFirst实践 ( 使用MS SqlServer)

    这里使用 MS SQLSERVER ,网上大多使用 SQLite 先来一个CodeFirst 新建项目 这里我们选择  ASP.NET Core Web Application (.NET Core) ...

  7. Linux Pthread 深入解析(转-度娘818)

    Linux Pthread 深入解析   Outline - 1.线程特点 - 2.pthread创建 - 3.pthread终止         - 4.mutex互斥量使用框架         - ...

  8. CI框架 CodeIgniter 伪静态 htaccess设置和Nginx伪静态方法2

    1.在根目录西下  新建.htaccess 文件 RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRu ...

  9. jQuery 语法

    通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行"操作"(actions). jQuery 语法实例 $(this).hide() 演示 jQuer ...

  10. SQL Server系统存储过程

    1. execute sp_databases   查询当前所有数据库大致信息(名称,大小等) 2. exec sp_helpdb [Myschool] 返回数据库的所有详细信息(数据库大小,位置,文 ...