標籤:style blog http color 使用 檔案
在實際項目應用中會偶爾使用檔案的壓縮上傳以及伺服器端的加壓處理,故寫此文記錄以備不時之需.
1.自己編寫的ZipHelper類.
1 public static class ZipHelper 2 { 3 private static string pathExe = AppDomain.CurrentDomain.BaseDirectory + @"Resource\WinRAR.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 //拼接壓縮命令參數14 string args = string.Format("a -as -r -afzip -ed -ibck -inul -m5 -mt5 -ep1 {0} {1}", zipfilename, sourcefilename); 15 16 //啟動壓縮排程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 //拼接解壓命令參數35 string args = string.Format("x -ibck -inul -y -mt5 {0} {1}", zipfilename, unzipfilename); 36 37 //啟動解壓進程38 isSucc = ProcessHelper.StartProcess(pathExe, args);39 return isSucc;40 }41 }
2.用到的ProcessHelper類.
1 public class ProcessHelper 2 { 3 /// <summary> 4 /// 啟動進程執行exe 5 /// </summary> 6 /// <param name="exePath">exe路徑</param> 7 /// <param name="exeArgs">exe所需參數</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 else22 {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相關命令解釋:
/* * <命令> -<開關1> -<開關N> <壓縮檔 > <檔案...> <@列表檔案...> <解壓路徑\> *壓縮 a a -as -r -afzip -ed -ibck -inul -m5 -mt5 -ep1 e:\text.zip d:\text.jpg *解壓 x x -ibck -inul -y -mt5 e:\text.zip e:\text *a d:\Info.zip D:\easyui *-af 指定格式 -afzip -afrar *-as 在當前添加的檔案清單中不存在的被壓縮檔,將會從壓縮檔中刪除 *-df 壓縮後刪除源檔案 *-dr 刪除到資源回收筒 *-ed 不添加空檔案夾 *-hp 添加密碼 -hp123456 *-ibck 後台運行 *-inul 禁止錯誤資訊 *-loff 壓縮完成後 關閉電源 *-m0 儲存 添加檔案到壓縮檔但是不壓縮 *-m1 最快 最快速的方法 ( 最低的壓縮比) *-m2 快速 快速壓縮方法 *-m3 標準 標準 (預設 ) 壓縮方法 *-m4 較好 較好的壓縮方法 (較高的壓縮比) *-m5 最優 最優的壓縮方法 (最高壓縮比但是速度也最慢) *-mtN 線程 -mt5 1~32 *-or 自動重新命名檔案 *-r 連同子檔案 *-z 壓縮後測試檔案 *-y 所有彈窗選擇"是" */ 4.官方相關解壓縮命令列解釋: 5.使用方法,拷貝WinRar.exe到你的工程指定目錄即可直接調用.