C#調(diào)用WinRar執(zhí)行rar、zip壓縮的方法
更新時(shí)間:2015年05月13日 10:42:39 作者:令狐不聰
這篇文章主要介紹了C#調(diào)用WinRar執(zhí)行rar、zip壓縮的方法,涉及C#針對(duì)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;
//通過(guò)Regedit(注冊(cè)表)找到WinRar文件
var registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
if (registryKey == null) return false;//未安裝
//registryKey = theReg;可以直接返回Registry對(duì)象供會(huì)面操作
winRarPath = registryKey.GetValue("").ToString();
//這里為節(jié)約資源,直接返回路徑,反正下面也沒(méi)用到
registryKey.Close();//關(guān)閉注冊(cè)表
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壓縮方式,方便用戶(hù)在不同環(huán)境下使用。
//(取消該參數(shù)則執(zhí)行rar壓縮)
//-m0 存儲(chǔ) 添加到壓縮文件時(shí)不壓縮文件。共6個(gè)級(jí)別【0-5】,值越大效果越好,也越慢
//ep1 依名稱(chēng)排除主目錄(生成的壓縮文件不會(huì)出現(xiàn)不必要的層級(jí))
//r 修復(fù)壓縮檔案
//t 測(cè)試壓縮檔案內(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();//開(kāi)始執(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();//開(kāi)始執(zhí)行
process.WaitForExit();//等待完成并退出
process.Close();//關(guān)閉調(diào)用 cmd 的什么什么
}
catch (Exception ex)
{
throw ex;
}
return unRarPath;
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:
- Windows系統(tǒng)中C#調(diào)用WinRAR來(lái)壓縮和解壓縮文件的方法
- C#中使用WinRAR實(shí)現(xiàn)加密壓縮及解壓縮文件
- c#調(diào)用winrar解壓縮文件代碼分享
- C#文件流進(jìn)行壓縮和解壓縮的方法
- C#使用GZipStream解壓縮數(shù)據(jù)文件的方法
- C#使用DeflateStream解壓縮數(shù)據(jù)文件的方法
- asp.net C#實(shí)現(xiàn)解壓縮文件的方法
- C#實(shí)現(xiàn)GZip壓縮和解壓縮入門(mén)實(shí)例
- C#使用WinRar命令進(jìn)行壓縮和解壓縮操作的實(shí)現(xiàn)方法
相關(guān)文章
Unity3D實(shí)現(xiàn)甜品消消樂(lè)游戲
這篇文章主要介紹了通過(guò)C# Unity3D繪制一個(gè)甜品消消樂(lè)游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12
C# 6.0的屬性(Property)的語(yǔ)法與初始值詳解
下面小編就為大家?guī)?lái)一篇C# 6.0的屬性(Property)的語(yǔ)法與初始值詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
C#預(yù)定義數(shù)據(jù)類(lèi)型之值類(lèi)型和引用類(lèi)型介紹
這篇文章主要介紹了C#預(yù)定義數(shù)據(jù)類(lèi)型之值類(lèi)型和引用類(lèi)型介紹,本文著重講解了引用類(lèi)型中的object(對(duì)象)類(lèi)型和string(字符串)類(lèi)型,需要的朋友可以參考下2015-03-03
C#使用泛型隊(duì)列Queue實(shí)現(xiàn)生產(chǎn)消費(fèi)模式
這篇文章介紹了C#使用泛型隊(duì)列Queue實(shí)現(xiàn)生產(chǎn)消費(fèi)模式的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
C#基于OLEDB獲取Excel文件表結(jié)構(gòu)信息的方法
這篇文章主要介紹了C#基于OLEDB獲取Excel文件表結(jié)構(gòu)信息的方法,結(jié)合實(shí)例形式分析了OLEDB的調(diào)用及Excel的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05

