C#调用Winrar实现解压缩

  1 C#解压RAR压缩文件(--转载--测试通过)
2 using System;
3 using System.Collections.Generic;
4 using System.Text;
5 using System.IO;
6 using Microsoft.Win32;
7 using System.Diagnostics;
8
9 namespace Uni.UniCustoms
10 {
11 public class clsWinrar
12 {
13 /// <summary>
14 /// 是否安装了Winrar
15 /// </summary>
16 /// <returns></returns>
17 static public bool Exists()
18 {
19 RegistryKey the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
20 return !string.IsNullOrEmpty(the_Reg.GetValue("").ToString());
21 }
22
23 /// <summary>
24 /// 打包成Rar
25 /// </summary>
26 /// <param name="patch"></param>
27 /// <param name="rarPatch"></param>
28 /// <param name="rarName"></param>
29 public void CompressRAR(string patch, string rarPatch, string rarName)
30 {
31 string the_rar;
32 RegistryKey the_Reg;
33 object the_Obj;
34 string the_Info;
35 ProcessStartInfo the_StartInfo;
36 Process the_Process;
37 try
38 {
39 the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
40 the_Obj = the_Reg.GetValue("");
41 the_rar = the_Obj.ToString();
42 the_Reg.Close();
43 //the_rar = the_rar.Substring(1, the_rar.Length - 7);建议删除
44 Directory.CreateDirectory(patch);
45 //命令参数
46 //the_Info = " a " + rarName + " " + @"C:Test?70821.txt"; //文件压缩
47 the_Info = " a " + rarName + " " + patch + " -r"; ;
48 the_StartInfo = new ProcessStartInfo();
49 the_StartInfo.FileName = the_rar;
50 the_StartInfo.Arguments = the_Info;
51 the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
52 //打包文件存放目录
53 the_StartInfo.WorkingDirectory = rarPatch;
54 the_Process = new Process();
55 the_Process.StartInfo = the_StartInfo;
56 the_Process.Start();
57 the_Process.WaitForExit();
58 the_Process.Close();
59 }
60 catch (Exception ex)
61 {
62 throw ex;
63 }
64 }
65 /// <summary>
66 /// 解压
67 /// </summary>
68 /// <param name="unRarPatch"></param>
69 /// <param name="rarPatch"></param>
70 /// <param name="rarName"></param>
71 /// <returns></returns>
72 public string unCompressRAR(string unRarPatch, string rarPatch, string rarName)
73 {
74 string the_rar;
75 RegistryKey the_Reg;
76 object the_Obj;
77 string the_Info;
78
79
80 try
81 {
82 the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
83 the_Obj = the_Reg.GetValue("");
84 the_rar = the_Obj.ToString();
85 the_Reg.Close();
86 //the_rar = the_rar.Substring(1, the_rar.Length - 7);
87
88 if (Directory.Exists(unRarPatch) == false)
89 {
90 Directory.CreateDirectory(unRarPatch);
91 }
92 the_Info = "x " + rarName + " " + unRarPatch + " -y";
93
94 ProcessStartInfo the_StartInfo = new ProcessStartInfo();
95 the_StartInfo.FileName = the_rar;
96 the_StartInfo.Arguments = the_Info;
97 the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
98 the_StartInfo.WorkingDirectory = rarPatch;//获取压缩包路径
99
100 Process the_Process = new Process();
101 the_Process.StartInfo = the_StartInfo;
102 the_Process.Start();
103 the_Process.WaitForExit();
104 the_Process.Close();
105 }
106 catch (Exception ex)
107 {
108 throw ex;
109 }
110 return unRarPatch;
111 }
112 }
113 }
114
115 RAR参数:
116 一、压缩命令
117 1、将temp.txt压缩为temp.rarrar a temp.rar temp.txt
118 2、将当前目录下所有文件压缩到temp.rarrar a temp.rar *.*
119 3、将当前目录下所有文件及其所有子目录压缩到temp.rarrar a temp.rar *.* -r
120 4、将当前目录下所有文件及其所有子目录压缩到temp.rar,并加上密码123rar a temp.rar *.* -r -p123
121 二、解压命令
122 1、将temp.rar解压到c:\temp目录rar e temp.rar c:\temprar e *.rar c:\temp(支持批量操作)
123 2、将temp.rar解压到c:\temp目录,并且解压后的目录结构和temp.rar中的目录结构一
124
125
126 压缩目录test及其子目录的文件内容
127 Wzzip test.zip test -r -P
128 WINRAR A test.rar test -r
129
130 删除压缩包中的*.txt文件
131 Wzzip test.zip *.txt -d
132 WinRAR d test.rar *.txt
133
134
135 刷新压缩包中的文件,即添加已经存在于压缩包中但更新的文件
136 Wzzip test.zip test -f
137 Winrar f test.rar test
138
139
140 更新压缩包中的文件,即添加已经存在于压缩包中但更新的文件以及新文件
141 Wzzip test.zip test -u
142 Winrar u test.rar test
143
144
145 移动文件到压缩包,即添加文件到压缩包后再删除被压缩的文件
146 Wzzip test.zip -r -P -m
147 Winrar m test.rar test -r
148
149
150 添加全部 *.exe 文件到压缩文件,但排除有 a或b
151 开头名称的文件
152 Wzzip test *.exe -xf*.* -xb*.*
153 WinRAR a test *.exe -xf*.* -xb*.*
154
155
156 加密码进行压缩
157 Wzzip test.zip test
158 -s123。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到+号标记(附图1)。
159 WINRAR A test.rar test -p123
160 -r。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到*号标记(附图2)。
161
162
163 按名字排序、以简要方式列表显示压缩包文件
164 Wzzip test.zip -vbn
165 Rar l test.rar
166
167
168 锁定压缩包,即防止未来对压缩包的任何修改
169 无对应命令
170 Winrar k test.rar
171
172
173 创建360kb大小的分卷压缩包
174 无对应命令
175 Winrar a -v360 test
176
177
178 带子目录信息解压缩文件
179 Wzunzip test -d
180 Winrar x test -r
181
182
183 不带子目录信息解压缩文件
184 Wzunzip test
185 Winrar e test
186
187
188 解压缩文件到指定目录,如果目录不存在,自动创建
189 Wzunzip test newfolder
190 Winrar x test newfolder
191
192
193 解压缩文件并确认覆盖文件
194 Wzunzip test -y
195 Winrar x test -y
196
197
198 解压缩特定文件
199 Wzunzip test *.txt
200 Winrar x test *.txt
201
202
203 解压缩现有文件的更新文件
204 Wzunzip test -f
205 Winrar x test -f
206
207
208 解压缩现有文件的更新文件及新文件
209 Wzunzip test -n
210 Winrar x test -u
211
212
213 批量解压缩文件
214 Wzunzip *.zip
215 WinRAR e *.rar

你可能感兴趣的:(解压缩)