rar压缩类
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压缩类的更多相关文章
- C# 解压RAR压缩文件
此方法适用于C盘windows文件夹中有WinRAR.exe文件 /// 解压文件(不带密码) RAR压缩程序 返回解压出来的文件数量 /// </summary> /// <par ...
- [原]Sql脚本压缩类。
精简的美丽 /* * Sql脚本压缩类. * 去掉sql语句中多余的空格,以减少sql脚本的文本长度 * * Author : goldli@163.com * DateTime : 2015/07/ ...
- php ZIP压缩类实例分享
php ZIP压缩类实例分享 <?php $zipfiles =array("/root/pooy/test1.txt","/root/pooy/test2.txt ...
- RAR压缩解压命令
RAR压缩解压命令 这几天一直没空更新博客,现在补上: 先介绍一下rar的命令格式及相关参数含义(摘自rar): 用法: rar <命令> -<开关 1> -<开关 ...
- 利用itertools生成密码字典,多线程撞库破解rar压缩文件密码
脚本功能: 利用itertools生成密码字典(迭代器形式) 多线程并发从密码字典中取出密码进行验证 验证成功后把密码写入文件中保存 #!/usr/bin/env python # -*- codin ...
- 关于在linux系统环境下解压rar压缩文件
如果在zip压缩文件,可以使有unzip来进行解压.可以直接使用yum进行下载. 但如果是rar类型压缩文件,使用yum就可能无法直接安装. 要到网址:https://www.rarlab.com/d ...
- Thinkphp js、css压缩类minify
说明:Minify 是用PHP5开发的应用,通过遵循一些Yahoo的优化规则来提高网站的性能.它会合并多个CSS或者JavaScript文件,移除一些不必要的空格和注释,进行gzip压缩,并且会设置浏 ...
- .NET 4.5 中新提供的压缩类
Windows8 的开发已经如火如荼开始了,在 Windows8 中提供的 .NET Framework 已经更新到了 4.5 版,其中又增加了一些新的特性,对压缩文件的支持就是其中之一. 在 4.5 ...
- C#调用RAR压缩与解压
public void RARsave(string rarPatch, string rarFiles,string patch,string rarName) { ...
随机推荐
- hdoj:2032
#include <iostream> #include <string> using namespace std; int main() { int n; ][]; ; i ...
- nginx日志分割小脚本
nginx的日志一直是写在一个文件上面,运行久了之后文件会非常大,因此我们有必要对nginx的日志进行分割: 1 2 3 4 5 6 7 8 9 10 11 #! /bin/bash ACCESS ...
- Java如何匹配列表中的电话号码?
在Java编程中如何匹配列表中的电话号码? 以下示例显示如何使用phone.matches(phoneNumberPattern)方法将列表中的电话号码与指定模式相匹配. package com.yi ...
- java 全组合 与全排列
一.全组合 public static void Combination( ) { /*基本思路:求全组合,则假设原有元素n个,则最终组合结果是2^n个.原因是: * 用位操作方法:假设元素原本有:a ...
- QT QML 3D模型查看器
原文链接:http://amin-ahmadi.com/2018/01/28/viewing-3d-models-using-qt/ 本文使用QT Quick中的Scene3D QML类型来查看3D模 ...
- 使用CollectionViewSource,通过Xaml绑定自动排序
这个是一个完成分组和排序功能的Datagrid,同样只是简单的绑定到List集合,后台不用额外的代码,所有功能都在Xaml中完成: 首先在UI中定义CollectionViewSource资源,在这里 ...
- Spring task定时任务执行一段时间后莫名其妙停止的问题
前因: 我写了一个小项目,主要功能是用Spring task定时任务每天定时给用户发送邮件.执行了几个月一直没有问题,前几天,莫名其妙的突然不再发送邮件了. 只好花费一些时间来查看到底是什么原因造成的 ...
- qt tableWidget 表格控件使用
//创建表格头 (灰色冻结状态的) QStringList header; header<<"Time"<<" ID "<< ...
- 还有看不懂的java语句?
Person stuProxy= (Person) Proxy.newProxyInstance(Person.class.getClassLoader(), new Class<?>[] ...
- F - Communication System
We have received an order from Pizoor Communications Inc. for a special communication system. The sy ...