欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#調(diào)用WinRar執(zhí)行rar、zip壓縮的方法

 更新時(shí)間:2015年05月13日 10:42:39   作者:令狐不聰  
這篇文章主要介紹了C#調(diào)用WinRar執(zhí)行rar、zip壓縮的方法,涉及C#針對winrar的判斷與調(diào)用技巧,需要的朋友可以參考下

本文實(shí)例講述了C#調(diào)用WinRar執(zhí)行rar、zip壓縮的方法。分享給大家供大家參考。具體如下:

判斷系統(tǒng)是否安裝了winrar

/// <summary>
/// 驗(yàn)證WinRar是否安裝。
/// </summary>
/// <returns>true:已安裝,false:未安裝</returns>
private static bool ExistsRar(out String winRarPath)
{
 winRarPath = String.Empty;
 //通過Regedit(注冊表)找到WinRar文件
 var registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
 if (registryKey == null) return false;//未安裝
 //registryKey = theReg;可以直接返回Registry對象供會(huì)面操作
 winRarPath = registryKey.GetValue("").ToString();
 //這里為節(jié)約資源,直接返回路徑,反正下面也沒用到
 registryKey.Close();//關(guān)閉注冊表
 return !String.IsNullOrEmpty(winRarPath);
}

壓縮

/// <summary>
/// 生成Zip
/// </summary>
/// <param name="path">文件夾路徑</param>
/// <param name="rarPath">生成壓縮文件的路徑</param>
/// <param name="rarName">生成壓縮文件的文件名</param>
public static void CompressRar(String path, String rarPath, String rarName)
{
 try
 {
  String winRarPath = null;
  if (!ExistsRar(out winRarPath)) return;
  //驗(yàn)證WinRar是否安裝。
  var pathInfo = String.Format("a -afzip -m0 -ep1 \"{0}\" \"{1}\"", rarName, path);
  #region WinRar 用到的命令注釋
  //[a] 添加到壓縮文件
  //afzip 執(zhí)行zip壓縮方式,方便用戶在不同環(huán)境下使用。
  //(取消該參數(shù)則執(zhí)行rar壓縮)
  //-m0 存儲 添加到壓縮文件時(shí)不壓縮文件。共6個(gè)級別【0-5】,值越大效果越好,也越慢
  //ep1 依名稱排除主目錄(生成的壓縮文件不會(huì)出現(xiàn)不必要的層級)
  //r 修復(fù)壓縮檔案
  //t 測試壓縮檔案內(nèi)的文件
  //as 同步壓縮檔案內(nèi)容 
  //-p 給壓縮文件加密碼方式為:-p123456
  #endregion
  //打包文件存放目錄
  var process = new Process
  {
   StartInfo = new ProcessStartInfo
   {
   FileName = winRarPath,//執(zhí)行的文件名
   Arguments = pathInfo,//需要執(zhí)行的命令
   UseShellExecute = false,//使用Shell執(zhí)行
   WindowStyle = ProcessWindowStyle.Hidden,//隱藏窗體
   WorkingDirectory = rarPath,//rar 存放位置
   CreateNoWindow = false,//不顯示窗體
   },
  };
  process.Start();//開始執(zhí)行
  process.WaitForExit();//等待完成并退出
  process.Close();//關(guān)閉調(diào)用 cmd 的什么什么
 }
 catch (Exception ex)
 {
  throw ex;
 }
}

解壓

/// <summary>
/// 解壓
/// </summary>
/// <param name="unRarPath">文件夾路徑</param>
/// <param name="rarPath">壓縮文件的路徑</param>
/// <param name="rarName">壓縮文件的文件名</param>
/// <returns></returns>
public static String UnCompressRar(String unRarPath, String rarPath, String rarName)
{
 try
 {
  String winRarPath = null;
  if (!ExistsRar(out winRarPath)) return "";
  //驗(yàn)證WinRar是否安裝。
  if (Directory.Exists(unRarPath) == false)
  {
   Directory.CreateDirectory(unRarPath);
  }
  var pathInfo = "x " + rarName + " " + unRarPath + " -y";
  var process = new Process
  {
   StartInfo = new ProcessStartInfo
   {
   FileName = winRarPath,//執(zhí)行的文件名
   Arguments = pathInfo,//需要執(zhí)行的命令
   UseShellExecute = false,//使用Shell執(zhí)行
   WindowStyle = ProcessWindowStyle.Hidden,//隱藏窗體
   WorkingDirectory = rarPath,//rar 存放位置
   CreateNoWindow = false,//不顯示窗體
   },
  };
  process.Start();//開始執(zhí)行
  process.WaitForExit();//等待完成并退出
  process.Close();//關(guān)閉調(diào)用 cmd 的什么什么
 }
 catch (Exception ex)
 {
  throw ex;
 }
 return unRarPath;
}

希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C# 設(shè)計(jì)模式系列教程-裝飾模式

    C# 設(shè)計(jì)模式系列教程-裝飾模式

    每個(gè)裝飾對象只關(guān)心自己的功能,不需要關(guān)心如何被添加到對象鏈當(dāng)中。它是由Decorator的SetComponent方法來實(shí)現(xiàn)的,因而它們的職責(zé)是單一的。
    2016-06-06
  • C#求解哈夫曼樹,實(shí)例代碼

    C#求解哈夫曼樹,實(shí)例代碼

    C#求解哈夫曼樹,實(shí)例代碼,需要的朋友可以參考一下
    2013-04-04
  • C#生成條形碼圖片的簡單方法

    C#生成條形碼圖片的簡單方法

    這篇文章主要介紹了C#生成條形碼圖片的簡單方法,實(shí)例分析了了條形碼圖片的生成原理與實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • C# 內(nèi)部類與Lambda表達(dá)式用法詳解

    C# 內(nèi)部類與Lambda表達(dá)式用法詳解

    Lambda表達(dá)式是一個(gè)匿名函數(shù),Lambda表達(dá)式基于數(shù)學(xué)中的λ演算得名,直接對應(yīng)于其中的lambda抽象,是一個(gè)匿名函數(shù),即沒有函數(shù)名的函數(shù);內(nèi)部類是將一個(gè)類定義在另一個(gè)給類里面或者方法里面,這樣的類就被稱為內(nèi)部類
    2021-10-10
  • C#中的延時(shí)函數(shù)sleep

    C#中的延時(shí)函數(shù)sleep

    這篇文章主要介紹了C#中的延時(shí)函數(shù)sleep用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • C# 獲取系統(tǒng)字體的示例代碼

    C# 獲取系統(tǒng)字體的示例代碼

    這篇文章主要介紹了C# 獲取系統(tǒng)字體的方法,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 深入學(xué)習(xí)C#多線程

    深入學(xué)習(xí)C#多線程

    本文詳細(xì)講解了C#多線程編程的相關(guān)技術(shù),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • c#序列化詳解示例

    c#序列化詳解示例

    序列化是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。與序列化相對的是反序列化,它將流轉(zhuǎn)換為對象。這兩個(gè)過程結(jié)合起來,可以輕松地存儲和傳輸數(shù)據(jù)
    2014-02-02
  • C#中的應(yīng)用程序接口介紹及實(shí)現(xiàn),密封類與密封方法

    C#中的應(yīng)用程序接口介紹及實(shí)現(xiàn),密封類與密封方法

    今天小編就為大家分享一篇關(guān)于C#中的應(yīng)用程序接口介紹及實(shí)現(xiàn),密封類與密封方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • C#?Unity使用正則表達(dá)式去除部分富文本的代碼示例

    C#?Unity使用正則表達(dá)式去除部分富文本的代碼示例

    正則表達(dá)式在我們?nèi)粘i_發(fā)中的用處不用多說了吧,下面這篇文章主要給大家介紹了關(guān)于C#?Unity使用正則表達(dá)式去除部分富文本的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03

最新評論