using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics; namespace Test
{
public class RAR
{
/// <summary>
/// 解压缩Rar文件
/// </summary>
/// <param name="rarFilePath">rar文件</param>
/// <param name="unrarDestPath">解压到</param>
public static void UnRarFile(string rarFilePath, string unrarDestPath)
{
//组合出需要shell的完整格式
string shellArguments = string.Format("x -o+ \"{0}\" \"{1}\\\"", rarFilePath, unrarDestPath); //用Process调用
using (Process unrar = new Process())
{
unrar.StartInfo.FileName = IOUtils.GetPhysicalPath("/ActiveX/WinRar.exe");
unrar.StartInfo.Arguments = shellArguments;
//隐藏rar本身的窗口
unrar.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
unrar.Start();
//等待解压完成
unrar.WaitForExit();
unrar.Close();
}
} /// <summary>
/// 压缩一个或多个文件
/// </summary>
/// <param name="rarFileName"></param>
/// <param name="fileList"></param>
/// <returns></returns>
public static bool RarFileList(string rarFileName, string fileList)
{
bool returnVal = false;
try
{
string shellArguments = string.Format("u -u -ep -ad \"{0}\" @\"{1}\"", rarFileName, fileList);
ExecuteCommand(shellArguments);
returnVal = true;
}
catch (Exception ex)
{
throw ex;
}
return returnVal;
} /// <summary>
/// 压缩一个目录
/// </summary>
/// <param name="rarFileName"></param>
/// <param name="dirPath"></param>
/// <returns></returns>
public static bool RarDirectory(string rarFileName, string dirPath)
{
bool returnVal = false;
try
{
string shellArguments = string.Format("a -o+ -ep -ad \"{0}\" @\"{1}\"", rarFileName, dirPath);
ExecuteCommand(shellArguments);
returnVal = true;
}
catch (Exception ex)
{
throw ex;
}
return returnVal;
} private static void ExecuteCommand(string CommandArguments)
{
using (Process rar_process = new Process())
{
rar_process.StartInfo.FileName = IOUtils.GetPhysicalPath("/ActiveX/WinRar.exe");
rar_process.StartInfo.Arguments = CommandArguments;
//隐藏rar本身的窗口
rar_process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
rar_process.StartInfo.UseShellExecute = false; try
{
rar_process.Start();
rar_process.WaitForExit();
string ex_message = "";
switch (rar_process.ExitCode)
{
case :// 成功操作。
ex_message = "";
break;
case :// 警告。发生非致命错误。
ex_message = "警告。发生非致命错误。";
break;
case :// 发生致命错误。
ex_message = "发生致命错误。";
break;
case :// 解压时发生 CRC 错误。
ex_message = "解压时发生 CRC 错误。";
break;
case :// 尝试修改一个 锁定的压缩文件。
ex_message = "尝试修改一个 锁定的压缩文件。";
break;
case :// 写错误。
ex_message = "写错误。";
break;
case :// 文件打开错误。
ex_message = "文件打开错误。";
break;
case :// 错误命令行选项。
ex_message = "错误命令行选项。";
break;
case :// 内存不足。
ex_message = "内存不足。";
break;
case :// 文件创建错误。
ex_message = "文件创建错误。";
break;
case :// 用户中断。
ex_message = "用户中断。";
break;
}
if (ex_message != string.Empty)
throw new Exception(ex_message); }
catch (Exception ex)
{
throw ex;
}
finally
{
rar_process.Close();
rar_process.Dispose();
}
}
}
}
}

rar压缩类的更多相关文章

  1. C# 解压RAR压缩文件

    此方法适用于C盘windows文件夹中有WinRAR.exe文件 /// 解压文件(不带密码) RAR压缩程序 返回解压出来的文件数量 /// </summary> /// <par ...

  2. [原]Sql脚本压缩类。

    精简的美丽 /* * Sql脚本压缩类. * 去掉sql语句中多余的空格,以减少sql脚本的文本长度 * * Author : goldli@163.com * DateTime : 2015/07/ ...

  3. php ZIP压缩类实例分享

    php ZIP压缩类实例分享 <?php $zipfiles =array("/root/pooy/test1.txt","/root/pooy/test2.txt ...

  4. RAR压缩解压命令

    RAR压缩解压命令 这几天一直没空更新博客,现在补上: 先介绍一下rar的命令格式及相关参数含义(摘自rar): 用法:   rar <命令> -<开关 1> -<开关 ...

  5. 利用itertools生成密码字典,多线程撞库破解rar压缩文件密码

    脚本功能: 利用itertools生成密码字典(迭代器形式) 多线程并发从密码字典中取出密码进行验证 验证成功后把密码写入文件中保存 #!/usr/bin/env python # -*- codin ...

  6. 关于在linux系统环境下解压rar压缩文件

    如果在zip压缩文件,可以使有unzip来进行解压.可以直接使用yum进行下载. 但如果是rar类型压缩文件,使用yum就可能无法直接安装. 要到网址:https://www.rarlab.com/d ...

  7. Thinkphp js、css压缩类minify

    说明:Minify 是用PHP5开发的应用,通过遵循一些Yahoo的优化规则来提高网站的性能.它会合并多个CSS或者JavaScript文件,移除一些不必要的空格和注释,进行gzip压缩,并且会设置浏 ...

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

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

  9. C#调用RAR压缩与解压

    public void RARsave(string rarPatch, string rarFiles,string  patch,string rarName)        {          ...

随机推荐

  1. 牛客网_Go语言相关练习_判断&选择题(5)

    一.判断题 defer应该在if后面,如果文件为空,close会崩溃. package main import ( "os" "fmt" ) func main ...

  2. java 全组合 与全排列

    一.全组合 public static void Combination( ) { /*基本思路:求全组合,则假设原有元素n个,则最终组合结果是2^n个.原因是: * 用位操作方法:假设元素原本有:a ...

  3. json转 PostMan bulk Edit application/x-www-form-urlencoded 需要的格式

    {?\n\s*"([^"]+)"\s*:\s*"?([^,"]+)"?\s*,?}? $1:$2\n PostMan需要的格式. json转 ...

  4. 【netcore基础】.Net core使用swagger自动生成开发文档

    之前写过一篇 .Net 版本的博客 https://www.cnblogs.com/jhli/p/8317566.html 现在只不过用了 netcore 之后的版本,其实差不多 netcore版本的 ...

  5. 一篇文章带你看懂Cloudflare信息泄露事件

    版权声明:本文由贺嘉  原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/753847001488039974 来源:腾云阁  ...

  6. 查看Oracle数据库SQL执行历史

    -- 找出哪个数据库用户用什么程序在最近三天执行过delete或truncate table的操作 SELECT c.username, a.program, b.sql_text, b.comman ...

  7. [原]Jenkins(二)---jenkins之Git+maven+jdk+tomcat

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5331 ...

  8. [原]openstack-kilo--issue(十)ERROR: openstack Unable to establish connection to http://controller:35357/v3/auth/tokens

    ====环境== openstack :kilo CentOS : 7 ====问题=== 在没有关vm的情况下,重启了controller. 问题一: 在使用nova service-list 或者 ...

  9. 10.11 rbac权限

    2018-10-11 12:25:11 现在写代码时候,不要好多代码放在一块!注重解耦!!!!! 把权限放到中间件里面,每次访问的时候都用到! 自己的网站弄完了,博客网站已经正式上线,就是有点丑! w ...

  10. N!

    求N! Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N ...