c#调用 WinRAR.exe以命令行形式实现文件、文件夹的解压缩
在實(shí)際項(xiàng)目應(yīng)用中會偶爾使用文件的壓縮上傳以及服務(wù)器端的加壓處理,故寫此文記錄以備不時之需.
1.自己編寫的ZipHelper類.
1 public static class ZipHelper
2 {
3 private static string pathExe = AppDomain.CurrentDomain.BaseDirectory + @"ResourceWinRAR.exe";
4 /// <summary>
5 /// 使用Gzip方法壓縮文件
6 /// </summary>
7 /// <param name="sourcefilename"></param>
8 /// <param name="zipfilename"></param>
9 /// <returns></returns>
10 public static bool GZipFile(string sourcefilename, string zipfilename)
11 {
12 bool isSucc = false;
13 //拼接壓縮命令參數(shù)
14 string args = string.Format("a -as -r -afzip -ed -ibck -inul -m5 -mt5 -ep1 {0} {1}", zipfilename, sourcefilename);
15
16 //啟動壓縮進(jìn)程
17 isSucc = ProcessHelper.StartProcess(pathExe,args);
18 return isSucc;
19 }
20
21 /// <summary>
22 /// 使用GZIP解壓文件的方法
23 /// </summary>
24 /// <param name="zipfilename"></param>
25 /// <param name="unzipfilename"></param>
26 /// <returns></returns>
27 public static bool UnGzipFile(string zipfilename, string unzipfilename)
28 {
29 bool isSucc = false;
30 if (!Directory.Exists(unzipfilename))
31 {
32 Directory.CreateDirectory(unzipfilename);
33 }
34 //拼接解壓命令參數(shù)
35 string args = string.Format("x -ibck -inul -y -mt5 {0} {1}", zipfilename, unzipfilename);
36
37 //啟動解壓進(jìn)程
38 isSucc = ProcessHelper.StartProcess(pathExe, args);
39 return isSucc;
40 }
41 }
2.用到的ProcessHelper類.
1 public class ProcessHelper
2 {
3 /// <summary>
4 /// 啟動進(jìn)程執(zhí)行exe
5 /// </summary>
6 /// <param name="exePath">exe路徑</param>
7 /// <param name="exeArgs">exe所需參數(shù)</param>
8 /// <returns></returns>
9 public static bool StartProcess(string exePath,string exeArgs)
10 {
11 bool isHidden = true;
12 bool isSucc = true;
13 Process process = new Process();
14 process.StartInfo.FileName = exePath;
15 process.StartInfo.Arguments = exeArgs;
16 if (isHidden)
17 {
18 process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
19 process.StartInfo.CreateNoWindow = true;
20 }
21 else
22 {
23 process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
24 process.StartInfo.CreateNoWindow = false;
25 }
26 process.Start();
27 int idx = 1;
28 while (!process.HasExited)
29 {
30 idx++;
31 process.WaitForExit(1000);
32 if (idx == 50)
33 {
34 process.Kill();
35 isSucc = false;
36 }
37 }
38 process.Close();
39 process.Dispose();
40 return isSucc;
41 }
42 }
3.WinRar相關(guān)命令解釋:
/*
* <命令> -<開關(guān)1> -<開關(guān)N> <壓縮文件 > <文件...> <@列表文件...> <解壓路徑>
*壓縮 a a -as -r -afzip -ed -ibck -inul -m5 -mt5 -ep1 e: ext.zip d: ext.jpg
*解壓 x x -ibck -inul -y -mt5e: ext.zip e: ext
*a d:Info.zip D:easyui
*-af 指定格式 -afzip -afrar
*-as 在當(dāng)前添加的文件列表中不存在的被壓縮文件,將會從壓縮文件中刪除
*-df 壓縮后刪除源文件
*-dr 刪除到回收站
*-ed 不添加空文件夾
*-hp 添加密碼 -hp123456
*-ibck 后臺運(yùn)行
*-inul 禁止錯誤信息
*-loff 壓縮完成后 關(guān)閉電源
*-m0 存儲 添加文件到壓縮文件但是不壓縮
*-m1 最快 最快速的方法 ( 最低的壓縮比)
*-m2 快速 快速壓縮方法
*-m3 標(biāo)準(zhǔn) 標(biāo)準(zhǔn) (默認(rèn) ) 壓縮方法
*-m4 較好 較好的壓縮方法 (較高的壓縮比)
*-m5 最優(yōu) 最優(yōu)的壓縮方法 (最高壓縮比但是速度也最慢)
*-mtN 線程 -mt5 1~32
*-or 自動重命名文件
*-r 連同子文件
*-z 壓縮后測試文件
*-y 所有彈窗選擇"是"
*/
4.官方相關(guān)解壓縮命令行解釋:
5.使用方法,拷貝WinRar.exe到你的工程指定目錄即可直接調(diào)用.
總結(jié)
以上是生活随笔為你收集整理的c#调用 WinRAR.exe以命令行形式实现文件、文件夹的解压缩的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记“debug alipay”一事
- 下一篇: vim 区域选择/块选择