zoukankan      html  css  js  c++  java
  • C# rar压缩 解压缩 文件

    此程序利用 WinRAR 程序对文件进行压缩,命令行语法可参考WinRAR中文帮助。

    /// <summary>   
    1. /// 利用 WinRAR 进行压缩   
    2. /// </summary>   
    3. /// <param name="path">将要被压缩的文件夹(绝对路径)</param>   
    4. /// <param name="rarPath">压缩后的 .rar 的存放目录(绝对路径)</param>   
    5. /// <param name="rarName">压缩文件的名称(包括后缀)</param>   
    6. /// <returns>true 或 false。压缩成功返回 true,反之,false。</returns>   
    7. public bool RAR(string path, string rarPath, string rarName)   
    8. {   
    9.     bool flag = false;   
    10.     string rarexe;       //WinRAR.exe 的完整路径   
    11.     RegistryKey regkey;  //注册表键   
    12.     Object regvalue;     //键值   
    13.     string cmd;          //WinRAR 命令参数   
    14.     ProcessStartInfo startinfo;   
    15.     Process process;   
    16.     try  
    17.     {   
    18.         regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");   
    19.         regvalue = regkey.GetValue("");  // 键值为 "d:\Program Files\WinRAR\WinRAR.exe" "%1"   
    20.         rarexe = regvalue.ToString();       
    21.         regkey.Close();   
    22.         rarexe = rarexe.Substring(1, rarexe.Length - 7);  // d:\Program Files\WinRAR\WinRAR.exe   
    23.         Directory.CreateDirectory(path);   
    24.         //压缩命令,相当于在要压缩的文件夹(path)上点右键 ->WinRAR->添加到压缩文件->输入压缩文件名(rarName)   
    25.         cmd = string.Format("a {0} {1} -r", rarName, path);   
    26.         startinfo = new ProcessStartInfo();   
    27.         startinfo.FileName = rarexe;   
    28.         startinfo.Arguments = cmd;                          //设置命令参数   
    29.         startinfo.WindowStyle = ProcessWindowStyle.Hidden;  //隐藏 WinRAR 窗口   
    30.         startinfo.WorkingDirectory = rarPath;   
    31.         process = new Process();   
    32.         process.StartInfo = startinfo;   
    33.         process.Start();   
    34.         process.WaitForExit(); //无限期等待进程 winrar.exe 退出   
    35.         if (process.HasExited)   
    36.         {   
    37.             flag = true;   
    38.         }   
    39.         process.Close();   
    40.     }   
    41.     catch (Exception e)   
    42.     {   
    43.         throw e;   
    44.     }   
    45.     return flag;   
    46. }   
    47. /// <summary>   
    48. /// 利用 WinRAR 进行解压缩   
    49. /// </summary>   
    50. /// <param name="path">文件解压路径(绝对)</param>   
    51. /// <param name="rarPath">将要解压缩的 .rar 文件的存放目录(绝对路径)</param>   
    52. /// <param name="rarName">将要解压缩的 .rar 文件名(包括后缀)</param>   
    53. /// <returns>true 或 false。解压缩成功返回 true,反之,false。</returns>   
    54. public bool UnRAR(string path, string rarPath, string rarName)   
    55. {   
    56.     bool flag = false;   
    57.     string rarexe;   
    58.     RegistryKey regkey;   
    59.     Object regvalue;   
    60.     string cmd;   
    61.     ProcessStartInfo startinfo;   
    62.     Process process;   
    63.     try  
    64.     {   
    65.         regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");   
    66.         regvalue = regkey.GetValue("");   
    67.         rarexe = regvalue.ToString();   
    68.         regkey.Close();   
    69.         rarexe = rarexe.Substring(1, rarexe.Length - 7);   
    70.         Directory.CreateDirectory(path);   
    71.         //解压缩命令,相当于在要压缩文件(rarName)上点右键 ->WinRAR->解压到当前文件夹   
    72.         cmd = string.Format("x {0} {1} -y", rarName, path);   
    73.         startinfo = new ProcessStartInfo();   
    74.         startinfo.FileName = rarexe;   
    75.         startinfo.Arguments = cmd;   
    76.         startinfo.WindowStyle = ProcessWindowStyle.Hidden;   
    77.         startinfo.WorkingDirectory = rarPath;   
    78.         process = new Process();   
    79.         process.StartInfo = startinfo;   
    80.         process.Start();   
    81.         process.WaitForExit();   
    82.         if (process.HasExited)   
    83.         {   
    84.             flag = true;   
    85.         }   
    86.         process.Close();   
    87.     }   
    88.     catch (Exception e)   
    89.     {   
    90.         throw e;   
    91.     }   
    92.     return flag;   
    93. }  
    /// <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\

  • 相关阅读:
    给jquery 添加触屏事件,上下左右 touchwipe插件
    node.js 安装运行
    CSS3 3D 盒子模型
    javascript 获取内联样式
    HTML5 离线存储应用案例
    swipe.js 轻松实现手机端滑动效果
    手机网页轮播切换,简易版
    多行文字垂直居中
    jquery实现简单轮播
    利用media query写响应式布局
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1833785.html
Copyright © 2011-2022 走看看