萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> C#實現rar壓縮與解壓縮文件的方法

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">壓縮文件的名稱(包括
copyright © 萬盛學電腦網 all rights reserved