源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#实现rar压缩与解压缩文件的方法

  • 时间:2022-01-24 14:07 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要: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#程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部