程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#完成rar緊縮與解緊縮文件的辦法

C#完成rar緊縮與解緊縮文件的辦法

編輯:C#入門知識

C#完成rar緊縮與解緊縮文件的辦法。本站提示廣大學習愛好者:(C#完成rar緊縮與解緊縮文件的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成rar緊縮與解緊縮文件的辦法正文


本文實例講述了C#完成rar緊縮與解緊縮文件的辦法。分享給年夜家供年夜家參考。詳細剖析以下:

此法式應用 WinRAR 法式對文件停止緊縮,敕令行語法可參考WinRAR中文贊助。

/// 應用 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(@"Applications\WinRAR.exe\shell\open\command");  
    regvalue = regkey.GetValue(""); // 鍵值為 "d:\Program Files\WinRAR\WinRAR.exe" "%1"  
    rarexe = regvalue.ToString();    
    regkey.Close();  
    rarexe = rarexe.Substring(1, rarexe.Length - 7); // d:\Program Files\WinRAR\WinRAR.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(@"Applications\WinRAR.exe\shell\open\command");  
    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">緊縮文件的稱號(包含後綴)</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(@"Applications\WinRAR.exe\shell\open\command");
    regvalue = regkey.GetValue(""); // 鍵值為 "d:\Program Files\WinRAR\WinRAR.exe" "%1"
    rarexe = regvalue.ToString();  
    regkey.Close();
    rarexe = rarexe.Substring(1, rarexe.Length - 7); // d:\Program Files\WinRAR\WinRAR.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(@"Applications\WinRAR.exe\shell\open\command");
    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;
}

在dos或許cmd下用cd敕令進入到winrar的裝置目次後,輸出unrar可出來以下提醒:

用法:     unrar < 敕令> -<開關 1> -<開關 N> <緊縮文件> <文件...> 
               <@ 列表文件...> <解壓途徑\> 

<敕令> 
  e             解壓緊縮文件到以後目次 
  l[t,b]        列出緊縮文件[技巧信息,簡練] 
  p             打印文件到尺度輸入裝備 
  t             測試緊縮文件 
  v[t,b]        具體列出緊縮文件[技巧信息,簡練] 
  x             用相對途徑解壓文件 

<開關> 
  -             停滯掃描 
  ac            緊縮或解壓後消除存檔屬性 
  ad            添加緊縮文件名到目的途徑 
  ap<格局>      添加途徑到緊縮文件中 
  av-           禁用用戶身份校驗 
  c-            禁用正文顯示 
  cfg-          禁用讀取設置裝備擺設 
  cl            稱號轉換為小寫 
  cu            稱號轉換為年夜寫 
  dh            翻開同享文件 
  ep            從稱號中消除途徑 
  ep3           擴大途徑為包括盤符的完整途徑 
  f             刷新文件 
  id[c,d,p,q]   禁用新聞 
  ierr          發送一切新聞到尺度毛病裝備 
  inul          禁用一切新聞 
  ioff          完成一個操作後封閉 PC 電源 
  kb            保存破壞的已解壓文件 
  n<文件>       僅包括指定的文件 
  n@            從尺度輸出裝備讀取文件名到包含 
  n@<列表>      在指定的文件列表包含文件 
  o+            籠罩已存在文件 
  o-            不籠罩已存在文件 
  oc            設置 NTFS 緊縮屬性 
  or            主動重定名文件 
  ow            保留或恢復文件一切者和組 
  p[暗碼]       設置暗碼 
  p-            不訊問暗碼 
  r             遞歸子目次 
  ri<P>[:<S>]   設置優先級(0-默許,1-最小..15-最年夜)和以毫秒為單元的休眠時光 
  sl<年夜小>      處置小於指定年夜小的文件 
  sm<年夜小>      處置跨越指定年夜小的文件 
  ta<日期>      添加日期 <日期> 後修正的文件,日期格局 YYYYMMDDHHMMSS 
  tb<日期>      添加日期 <日期> 前修正的文件,日期格局 YYYYMMDDHHMMSS 
  tn<時光>      添加 <時光> 今後的文件 
  to< 時光>      添加 <時光> 之前的文件 
  ts<m,c,a>[N]  保留或恢復文件時光(修正,創立,拜訪) 
  u             更新文件 
  v             列出一切卷 
  ver[n]        文件版本掌握 
  vp            每卷之前暫停 
  x<文件>       消除指定的文件 
  x@            從尺度輸出裝備讀取要消除的文件名 
  x@<列表>      消除指定列表文件中的文件 
  y             假定對全體訊問都答復是

在DOS(cmd)下應用WinRAR解縮文件詳細舉例:
假定,d 盤中有一個 winrar.rar,要解壓到F盤中的hello文件夾中,則在dos下輸出以下敕令便可:
unrar x d:\winrar.rar F:\hello\

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved