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#程序设计有所帮助。

以上是 C#实现rar压缩与解压缩文件的方法 的全部内容, 来源链接: utcz.com/z/350030.html

回到顶部