C#实现rar压缩与解压缩文件的方法

   本文实例讲述了C#实现rar压缩与解压缩文件的方法。分享给大家供大家参考。具体分析如下:

  此程序利用 WinRAR 程序对文件进行压缩,命令行语法可参考WinRAR中文帮助。

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187

/// 利用 WinRAR 进行压缩
/// </summary>
/// <param name="path">将要被压缩的文件夹(绝对路径)</param>
/// <param name="rarPath">压缩后的 .rar 的存放目录(绝对路径)</param>
/// <param name="rarName">压缩文件的名称(包括后缀)</param>
/// <returns>true 或 false。压缩成功返回 true,反之,false。</returns>
public bool RAR(string path, string rarPath, string rarName)
{
bool flag = false;
string rarexe; //WinRAR.exe 的完整路径
RegistryKey regkey; //注册表键
Object regvalue; //键值
string cmd; //WinRAR 命令参数
ProcessStartInfo startinfo;
Process process;
try
{
regkey = Registry.ClassesRoot.OpenSubKey(@"ApplicationsWinRAR.exeshellopencommand");
regvalue = regkey.GetValue(""); // 键值为 "d:Program FilesWinRARWinRAR.exe" "%1"
rarexe = regvalue.ToString();
regkey.Close();
rarexe = rarexe.Substring(1, rarexe.Length - 7); // d:Program FilesWinRARWinRAR.exe
Directory.CreateDirectory(path);
//压缩命令,相当于在要压缩的文件夹(path)上点右键 ->WinRAR->添加到压缩文件->输入压缩文件名(rarName)
cmd = string.Format("a {0} {1} -r", rarName, path);
startinfo = new ProcessStartInfo();
startinfo.FileName = rarexe;
startinfo.Arguments = cmd; //设置命令参数
startinfo.WindowStyle = ProcessWindowStyle.Hidden; //隐藏 WinRAR 窗口
startinfo.WorkingDirectory = rarPath;
process = new Process();
process.StartInfo = startinfo;
process.Start();
process.WaitForExit(); //无限期等待进程 winrar.exe 退出
if (process.HasExited)
{
flag = true;
}
process.Close();
}
catch (Exception e)
{
throw e;
}
return flag;
}
/// <summary>
/// 利用 WinRAR 进行解压缩
/// </summary>
/// <param name="path">文件解压路径(绝对)</param>
/// <param name="rarPath">将要解压缩的 .rar 文件的存放目录(绝对路径)</param>
/// <param name="rarName">将要解压缩的 .rar 文件名(包括后缀)</param>
/// <returns>true 或 false。解压缩成功返回 true,反之,false。</returns>
public bool UnRAR(string path, string rarPath, string rarName)
{
bool flag = false;
string rarexe;
RegistryKey regkey;
Object regvalue;
string cmd;
ProcessStartInfo startinfo;
Process process;
try
{
regkey = Registry.ClassesRoot.OpenSubKey(@"ApplicationsWinRAR.exeshellopencommand");
regvalue = regkey.GetValue("");
rarexe = regvalue.ToString();
regkey.Close();
rarexe = rarexe.Substring(1, rarexe.Length - 7);
Directory.CreateDirectory(path);
//解压缩命令,相当于在要压缩文件(rarName)上点右键 ->WinRAR->解压到当前文件夹
cmd = string.Format("x {0} {1} -y", rarName, path);
startinfo = new ProcessStartInfo();
startinfo.FileName = rarexe;
startinfo.Arguments = cmd;
startinfo.WindowStyle = ProcessWindowStyle.Hidden;
startinfo.WorkingDirectory = rarPath;
process = new Process();
process.StartInfo = startinfo;
process.Start();
process.WaitForExit();
if (process.HasExited)
{
flag = true;
}
process.Close();
}
catch (Exception e)
{
throw e;
}
return flag;
}
/// <summary>
/// 利用 WinRAR 进行压缩
/// </summary>
/// <param name="path">将要被压缩的文件夹(绝对路径)</param>
/// <param name="rarPath">压缩后的 .rar 的存放目录(绝对路径)</param>
/// <param name="rarName">压缩文件的名称(包括后缀)</param>
/// <returns>true 或 false。压缩成功返回 true,反之,false。</returns>
public bool RAR(string path, string rarPath, string rarName)
{
bool flag = false;
string rarexe; //WinRAR.exe 的完整路径
RegistryKey regkey; //注册表键
Object regvalue; //键值
string cmd; //WinRAR 命令参数
ProcessStartInfo startinfo;
Process process;
try
{
regkey = Registry.ClassesRoot.OpenSubKey(@"ApplicationsWinRAR.exeshellopencommand");
regvalue = regkey.GetValue(""); // 键值为 "d:Program FilesWinRARWinRAR.exe" "%1"
rarexe = regvalue.ToString();
regkey.Close();
rarexe = rarexe.Substring(1, rarexe.Length - 7); // d:Program FilesWinRARWinRAR.exe
Directory.CreateDirectory(path);
//压缩命令,相当于在要压缩的文件夹(path)上点右键 ->WinRAR->添加到压缩文件->输入压缩文件名(rarName)
cmd = string.Format("a {0} {1} -r", rarName, path);
startinfo = new ProcessStartInfo();
startinfo.FileName = rarexe;
startinfo.Arguments = cmd; //设置命令参数
startinfo.WindowStyle = ProcessWindowStyle.Hidden; //隐藏 WinRAR 窗口
startinfo.WorkingDirectory = rarPath;
process = new Process();
process.StartInfo = startinfo;
process.Start();
process.WaitForExit(); //无限期等待进程 winrar.exe 退出
if (process.HasExited)
{
flag = true;
}
process.Close();
}
catch (Exception e)
{
throw e;
}
return flag;
}
/// <summary>
/// 利用 WinRAR 进行解压缩
/// </summary>
/// <param name="path">文件解压路径(绝对)</param>
/// <param name="rarPath">将要解压缩的 .rar 文件的存放目录(绝对路径)</param>
/// <param name="rarName">将要解压缩的 .rar 文件名(包括后缀)</param>
/// <returns>true 或 false。解压缩成功返回 true,反之,false。</returns>
public bool UnRAR(string path, string rarPath, string rarName)
{
bool flag = false;
string rarexe;
RegistryKey regkey;
Object regvalue;
string cmd;
ProcessStartInfo startinfo;
Process process;
try
{
regkey = Registry.ClassesRoot.OpenSubKey(@"ApplicationsWinRAR.exeshellopencommand");
regvalue = regkey.GetValue("");
rarexe = regvalue.ToString();
regkey.Close();
rarexe = rarexe.Substring(1, rarexe.Length - 7);
Directory.CreateDirectory(path);
//解压缩命令,相当于在要压缩文件(rarName)上点右键 ->WinRAR->解压到当前文件夹
cmd = string.Format("x {0} {1} -y", rarName, path);
startinfo = new ProcessStartInfo();
startinfo.FileName = rarexe;
startinfo.Arguments = cmd;
startinfo.WindowStyle = ProcessWindowStyle.Hidden;
startinfo.WorkingDirectory = rarPath;
process = new Process();
process.StartInfo = startinfo;
process.Start();
process.WaitForExit();
if (process.HasExited)
{
flag = true;
}
process.Close();
}
catch (Exception e)
{
throw e;
}
return flag;
}

  在dos或者cmd下用cd命令进入到winrar的安装目录后,输入unrar可出来以下提示:

  用法: unrar < 命令> -<开关 1> -<开关 N> <压缩文件> <文件...>

  <@ 列表文件...> <解压路径>

  <命令>

  e 解压压缩文件到当前目录

  l[t,b] 列出压缩文件[技术信息,简洁]

  p 打印文件到标准输出设备

  t 测试压缩文件

  v[t,b] 详细列出压缩文件[技术信息,简洁]

  x 用绝对路径解压文件

  <开关>

  - 停止扫描

  ac 压缩或解压后清除存档属性

  ad 添加压缩文件名到目标路径

  ap<格式> 添加路径到压缩文件中

  av- 禁用用户身份校验

  c- 禁用注释显示

  cfg- 禁用读取配置

  cl 名称转换为小写

  cu 名称转换为大写

  dh 打开共享文件

  ep 从名称中排除路径

  ep3 扩展路径为包含盘符的完全路径

  f 刷新文件

  id[c,d,p,q] 禁用消息

  ierr 发送所有消息到标准错误设备

  inul 禁用所有消息

  ioff 完成一个操作后关闭 PC 电源

  kb 保留损坏的已解压文件

  n<文件> 仅包含指定的文件

  n@ 从标准输入设备读取文件名到包括

  n@<列表> 在指定的文件列表包括文件

  o+ 覆盖已存在文件

  o- 不覆盖已存在文件

  oc 设置 NTFS 压缩属性

  or 自动重命名文件

  ow 保存或恢复文件所有者和组

  p[密码] 设置密码

  p- 不询问密码

  r 递归子目录

  ri

  [:] 设置优先级(0-默认,1-最小..15-最大)和以毫秒为单位的休眠时间

  sl<大小> 处理小于指定大小的文件

  sm<大小> 处理超过指定大小的文件

  ta<日期> 添加日期 <日期> 后修改的文件,日期格式 YYYYMMDDHHMMSS

  tb<日期> 添加日期 <日期> 前修改的文件,日期格式 YYYYMMDDHHMMSS

  tn<时间> 添加 <时间> 以后的文件

  to< 时间> 添加 <时间> 以前的文件

  ts[N] 保存或恢复文件时间(修改,创建,访问)

  u 更新文件

  v 列出所有卷

  ver[n] 文件版本控制

  vp 每卷之前暂停

  x<文件> 排除指定的文件

  x@ 从标准输入设备读取要排除的文件名

  x@<列表> 排除指定列表文件中的文件

  y 假设对全部询问都回答是

  在DOS(cmd)下使用WinRAR解缩文件具体举例:

  假设,d 盘中有一个 winrar.rar,要解压到F盘中的hello文件夹中,则在dos下输入以下命令即可:

  unrar x d:winrar.rar F:hello

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

时间: 2024-11-08 19:00:51

C#实现rar压缩与解压缩文件的方法的相关文章

C#中使用WinRAR实现加密压缩及解压缩文件

  本次示例主要实现: 1.压缩文件夹及其下文件 2.压缩文件夹下文件 3.压缩文件夹及其下文件为rar 还是 zip 4.解压缩 5.加密压缩及解加密压缩 ----------- 示例代码如下: ? protected void Button1_Click(object sender, EventArgs e) { string strtxtPath = "C://freezip//free.txt"; string strzipPath = "C://freezip//f

asp.net C#实现解压缩文件的方法_实用技巧

本文实例讲述了asp.net C#实现解压缩文件的方法.一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量的但需要调用ICSharpCode.SharpZipLib.dll类了,最后一个比较实例可压缩也可以解压缩了分享给大家供大家参考.具体如下: 解压缩单个文件: 复制代码 代码如下: using System.IO; using System.IO.Compression; string sourceFile=@"D:2.zip"; string d

Go语言压缩和解压缩tar.gz文件的方法_Golang

本文实例讲述了Go语言压缩和解压缩tar.gz文件的方法.分享给大家供大家参考.具体分析如下: golang处理压缩包,最常用的就是tar.gz了,这里写了一个测试一下. 压缩文件: 复制代码 代码如下: package main import (     "fmt"     "os"     "io"     "archive/tar"     "compress/gzip" ) func main()

Yii2中使用asset压缩js,css文件的方法_php实例

官网文档 http://www.yiiframework.com/doc-2.0/guide-structure-assets.html yii目录下运行 asset/template assets.php 生成assets.php,这是一个配置模板,并修改如下 <?php /** * Configuration file for the "yii asset" console command. */ // In the console environment, some pat

Yii2中使用asset压缩js,css文件的方法

官网文档 http://www.yiiframework.com/doc-2.0/guide-structure-assets.html yii目录下运行 asset/template assets.php 生成assets.php,这是一个配置模板,并修改如下 <?php /** * Configuration file for the "yii asset" console command. */ // In the console environment, some pat

如何在Linux中压缩及解压缩.bz2文件

对文件进行压缩,可以通过使用较少的字节对文件中的数据进行编码来显著地减小文件的大小,并且在跨网络的文件的备份和传送时很有用. 另一方面,解压文件意味着将文件中的数据恢复到初始状态. Linux 中有几个文件压缩和解压缩工具,比如gzip.7-zip.Lrzip.PeaZip 等等. 本篇教程中,我们将介绍如何在 Linux 中使用 bzip2 工具压缩及解压缩.bz2文件. bzip2 是一个非常有名的压缩工具,并且在大多数主流 Linux 发行版上都有,你可以在你的发行版上用合适的命令来安装它

linux 管理小命令3—— 压缩与解压缩上篇

1.compress 使用权限:所有使用者 使用方式:compress [-dfvcV] [-b maxbits] [file ...] 说明:compress是一个相当古老的unix档案压缩指令,压缩后的档案会加上一个.Z延伸档名以区别未压缩的档案,压缩后的档案可以以uncompress解压.若要将数个档案压成一个压缩档,必须先将档案tar起来再压缩.由于gzip可以产生更理想的压缩比例,一般人多已改用gzip为档案压缩工具.  参数:  c输出结果至标准输出设备(一般指荧幕)  f强迫写入档

如何用CZip/CUnzip类压缩/解压缩文件

本文介绍如何用CZip/CUnzip类压缩/解压缩文件,这个类使用gzip GNU源代码(gzip-1.2.4a).这是个免费软件,在GUN通用公共许可证(General Public License)条款下可以分发及修改此软件,关于这个通用公共许可证的详细条款请参考: http://www.vckbase.com/vckbase/uniondocs/gungpl.htm 目标动态库输出两个类: CZip(用于压缩文件) CUnzip (用于解压缩文件) 首先用文件名建立CZip 或 CUnzi

如何压缩文件与解压缩文件

我们经常听到"压缩文件"这样一个用语,这是怎么一回事呢?原来为了将计算机的可用资源能够得到充分利用,尽量减少存放的空间,通常情况下压缩以后的文件是没有经过压缩的文件的十分之一.压缩以后的文件更加方便文件的传递.我们就可以利用机器上面的压缩工具"winzip"将多个文件压缩成一个文件. 首先建立一个文件夹,将准备要求压缩的所有对象都存放在上面,如果文件夹已经存在,即可按光标选中后,按右击键弹出快捷菜单,然后按光标的上下方向键指向 "add to所选文件名.z