c#调用WinRAR软件压缩和解压文件
using System;
using System.Collections.Generic;
using System.Web;
using System.IO;
using System.Linq;
using System.IO.Compression;
using System.Text;
using System.Collections;
using System.Diagnostics;
using Microsoft.Win32; namespace RarHelper
{
public class RARClass
{
/// <summary>
/// 获取WinRAR.exe路径
/// </summary>
/// <returns>为空则表示未安装WinRAR</returns>
public static string ExistsRAR()
{
RegistryKey regkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
//RegistryKey regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");
string strkey = regkey.GetValue("").ToString();
regkey.Close();
//return strkey.Substring(1, strkey.Length - 7);
return strkey;
} /// <summary>
/// 解压RAR文件
/// </summary>
/// <param name="rarFilePath">要解压的文件路径</param>
/// <param name="unrarDestPath">解压路径(绝对路径)</param>
public static void UnRAR(string rarFilePath, string unrarDestPath)
{
string rarexe = ExistsRAR();
if (String.IsNullOrEmpty(rarexe))
{
throw new Exception("未安装WinRAR程序。");
}
try
{
//组合出需要shell的完整格式
string shellArguments = string.Format("x -o+ \"{0}\" \"{1}\\\"", rarFilePath, unrarDestPath); //用Process调用
using (Process unrar = new Process())
{
ProcessStartInfo startinfo = new ProcessStartInfo();
startinfo.FileName = rarexe;
startinfo.Arguments = shellArguments; //设置命令参数
startinfo.WindowStyle = ProcessWindowStyle.Hidden; //隐藏 WinRAR 窗口 unrar.StartInfo = startinfo;
unrar.Start();
unrar.WaitForExit();//等待解压完成 unrar.Close();
}
}
catch
{
throw;
}
} /// <summary>
/// 压缩为RAR文件
/// </summary>
/// <param name="filePath">要压缩的文件路径(绝对路径)</param>
/// <param name="rarfilePath">压缩到的路径(绝对路径)</param>
public static void RAR(string filePath, string rarfilePath, string otherPara = "")
{
RAR(filePath, rarfilePath, "", "", otherPara);
} /// <summary>
/// 压缩为RAR文件
/// </summary>
/// <param name="filePath">要压缩的文件路径(绝对路径)</param>
/// <param name="rarfilePath">压缩到的路径(绝对路径)</param>
/// <param name="rarName">压缩后压缩包名称</param>
public static void RAR(string filePath, string rarfilePath, string rarName, string otherPara = "")
{
RAR(filePath, rarfilePath, "", rarName, otherPara);
} /// <summary>
/// 压缩为RAR文件
/// </summary>
/// <param name="filePath">要压缩的文件路径(绝对路径)</param>
/// <param name="rarfilePath">压缩到的路径(绝对路径)</param>
/// <param name="rarName">压缩后压缩包名称</param>
/// <param name="password">解压密钥</param>
public static void RAR(string filePath, string rarfilePath, string password, string rarName, string otherPara = "")
{
string rarexe = ExistsRAR();
if (String.IsNullOrEmpty(rarexe))
{
throw new Exception("未安装WinRAR程序。");
} if (!Directory.Exists(filePath))
{
//throw new Exception("文件不存在!");
} if (String.IsNullOrEmpty(rarName))
{
rarName = Path.GetFileNameWithoutExtension(filePath) + ".rar";
}
else
{
if (Path.GetExtension(rarName).ToLower() != ".rar")
{
rarName += ".rar";
}
} try
{
//Directory.CreateDirectory(rarfilePath);
//压缩命令,相当于在要压缩的文件夹(path)上点右键->WinRAR->添加到压缩文件->输入压缩文件名(rarName)
string shellArguments;
if (String.IsNullOrEmpty(password))
{
shellArguments = string.Format("a -ep1 \"{0}\" \"{1}\" -r", rarName, filePath);
}
else
{
shellArguments = string.Format("a -ep1 \"{0}\" \"{1}\" -r -p\"{2}\"", rarName, filePath, password);
}
if (!string.IsNullOrEmpty(otherPara))
{
shellArguments = shellArguments + " " + otherPara;
} using (Process rar = new Process())
{
ProcessStartInfo startinfo = new ProcessStartInfo();
startinfo.FileName = rarexe;
startinfo.Arguments = shellArguments; //设置命令参数
startinfo.WindowStyle = ProcessWindowStyle.Hidden; //隐藏 WinRAR 窗口
startinfo.WorkingDirectory = rarfilePath; rar.StartInfo = startinfo;
rar.Start();
rar.WaitForExit(); //无限期等待进程 winrar.exe 退出
rar.Close();
}
}
catch
{
throw;
}
} }
}
c#调用WinRAR软件压缩和解压文件的更多相关文章
- C#压缩和解压文件
这里用两种方法实现C#压缩和解压文件 1.使用System.IO.Compression名称空间下的相关类(需引用 System.IO.Compression.FileSystem和System.IO ...
- 【转】Java压缩和解压文件工具类ZipUtil
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- C# 压缩和解压文件(SharpZipLib)
先从网上下载ICSharpCode.SharpZipLib.dll类库 将文件或文件夹压缩为zip,函数如下 /// <summary> /// 压缩文件 /// </summary ...
- 压缩和解压文件:tar gzip bzip2 compress(转)
tar[必要参数][选择参数][文件] 压缩:tar -czvf filename.tar.gz targetfile解压:tar -zxvf filename.tar.gz参数说明: -c 建立新的 ...
- linux 压缩和解压文件
一.压缩:20120715文件下面所有的文件 如下: tar -zcvf 20120715.tar.gz 20120715* 二.解压20120715.tar.gz压缩包 如下: tar -xzvf ...
- 使用GZipStream压缩和解压文件
最近做了一个用.NET里的GZipStream压缩解压缩gzip文件的小程序. GZipStream在System.IO.Compression底下,使用起来也很简单.虽然GZipStream是Str ...
- linux压缩和解压文件命令
tar 解包:tar zxvf filename.tar 打包:tar czvf filename.tar dirnamegz命令 解压1:gunzip filename.gz 解压2:gzi ...
- Android_JarZip压缩和解压文件
本文资料来自<android开发权威指南> AndroidSDK中提供了java.util.jar和java.util.zip包中的若干类和接口来完成. 压缩文件基本步骤: 1.创 ...
- metro压缩和解压文件
在1.zip中增加一张新图片StorageFile jpg = await KnownFolders.PicturesLibrary.GetFileAsync("1.jpg"); ...
随机推荐
- laravel-u-editor工具栏语言切换的方法
更改/config/app.php/locale,可支持en,zh_CN,zh_TW,我们一般设为zh_CN
- Dell Inspiron 7520 安装Ubuntu 14.04 LTS
我的电脑是Dell Inspiron 7520,之前用的Windows 7, 装了虚拟机,再在虚拟机里面装Ubuntu, 电脑一直卡顿,一怒之下,升级了内存,直接16G,然后,还是卡顿,CPU是i5的 ...
- (1)OracleClient数据库操作(淘汰)
一.数据库连接 Oracle 数据提供程序,位于System.Data.OracleClient 命名空间.( .NET 4 以后的版本,会将不在维护和更新了) 第一步:引入命名空间 在程序的开头写上 ...
- (5)Toad for oracle使用
版本 toad 11.6 1.表数据颜色设置 误操作后表颜色变成这样 界面选择:view-Toad Optins 选择传统模式可以改回到原来的颜色 2.解决锁表 Database-Monitor-Se ...
- Python的支持工具[0] -> 环境包管理工具[1] -> Anaconda
Anaconda包管理工具 / Anaconda Package Management Tools Anaconda is the world’s most popular Python data s ...
- [POI2010]Beads
题目大意: 给定一个长度为$n(n\leq200000)$的串$S_{1\sim n}$,选择一个$l$,从$S_1$开始,将$S$分为连续的若干段,使得每一段长度为$l$.令$k$为分出来不同的子串 ...
- SQL 连表更新
现在数据如下: 需求如下: 要求 更新 Earnings 表中的Earnings字段 当 Table_2 KPI 大于等于1时 Earinings = KPI* 2000,否则等于 KPI* 1500 ...
- Android的数据存储方式概述
数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 ...
- 基于avalon+jquery做的bootstrap分页控件
刚开始学习avalon,项目需要就尝试写了个分页控件Pager.js:基于BootStrap样式这个大家都很熟悉 在这里推荐下国产前端神器avalon:确实好用,帮我解决了很多前端问题. 不多说了,代 ...
- oracle 博客精选
http://mp.sohu.com/profile?xpt=b3JhbmV3c0Bzb2h1LmNvbQ==