由于版本更新需要,研究了下调用WinRAR软件进行解压缩。

  1. 获取WinRAR应用程序路径:通过注册表,获取exe路径;我的Win10是"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe"。其他系统不知道有没有变化,可以自己打开注册表去检查下。
  2. 创建Process类操作WinRAR应用程序:配置好ProcessStartInfo参数(在ProcessStartInfo参数中可以对Arguments 的赋值,传入RAR命令符)
  3. RAR命令符说明:随意打开WinRAR后可以查看相应的命令符说明
    以下是封装的类
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DemoRAR
{public class RARHelper{static string WinRARRegeditPath= @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";#region 私有方法/// <summary>/// 获取WinRAR应用程序路径,如果注册表中没有则返回当前目录下\res\WinRAR.exe/// </summary>/// <returns>返回注册表中指定的RAR应用程序路径,没有则返回当前目录下\res\WinRAR.exe</returns>private string GetExePath(){RegistryKey the_Reg = Registry.LocalMachine.OpenSubKey(WinRARRegeditPath);//访问储存应用程序注册表信息键值string exePath = the_Reg.GetValue("").ToString();//查询WINRAR注册表储存路径the_Reg.Close();if (string.IsNullOrEmpty(exePath))    //如果存在则表示应用程序存在于本计算机中exePath = Application.StartupPath + "\\res\\WinRAR.exe";return exePath;}/// <summary>/// 创建控制WinRAR的Process类,并设置好ProcessStartInfo属性/// </summary>/// <param name="workDirectory">压缩包的路径</param>/// <param name="rarCmd">命令符</param>/// <param name="exePath"></param>/// <returns></returns>private Process CreateRARProcess(string workDirectory, string rarCmd, string exePath,bool useShellExecute = false){ProcessStartInfo startinfo = new ProcessStartInfo();startinfo.FileName = exePath; //应用程序路径startinfo.Arguments = rarCmd; //设置命令参数  startinfo.WindowStyle = ProcessWindowStyle.Hidden; //隐藏 WinRAR 窗口  startinfo.WorkingDirectory = workDirectory;startinfo.UseShellExecute = useShellExecute;Process process = new Process();process.StartInfo = startinfo;return process;}/// <summary>/// 传入RAR命令符,执行rar命令/// </summary>/// <param name="rarFolder">压缩包路径</param>/// <param name="rarCmd">RAR命令符</param>/// <returns></returns>private bool ExecuteRAR(string rarFolder,string rarCmd){bool flag = false;Process process;try{string exePath = GetExePath();Directory.CreateDirectory(rarFolder);process = CreateRARProcess(rarFolder, rarCmd, exePath);process.Start();process.WaitForExit(); //无限期等待进程 winrar.exe 退出  if (process.HasExited){flag = true;}process.Close();}catch (Exception e){throw e;}return flag;}#endregion/// <summary>/// 压缩文件/// </summary>/// <param name="sourceFolder">压缩文件的文件夹目录</param>/// <param name="rarFolder">压缩文件目录</param>/// <param name="rarName">压缩文件名</param>/// <returns></returns>public bool RAR(string sourceFolder, string rarFolder, string rarName){//压缩命令,相当于在要压缩的文件夹(path)上点右键 ->WinRAR->添加到压缩文件->输入压缩文件名(rarName)  string rarCmd = string.Format("a {0} {1} -r -ep1", rarName, sourceFolder); //a 表示压缩 -r 表示囊括子文件夹 -ep1表示不要囊括父文件夹return ExecuteRAR( rarFolder, rarCmd);}/// <summary>/// 解压缩/// </summary>/// <param name="fileFolder">解压后文件存放路径</param>/// <param name="rarFolder">RAR压缩包存放路径</param>/// <param name="rarName">RAR压缩包名字</param>/// <returns></returns>public bool UnRAR(string fileFolder, string rarFolder,string rarName){//解压缩命令,相当于在要压缩文件(rarName)上点右键 ->WinRAR->解压到当前文件夹  -y表示如果存在相同文件则覆盖string rarCmd = string.Format("x {0} {1} -y", rarFolder + "\\" + rarName, fileFolder);return ExecuteRAR(rarFolder, rarCmd);}/// <summary>/// 异步解压缩/// </summary>/// <param name="fileFolder">解压后文件存放路径</param>/// <param name="rarFolder">RAR压缩包存放路径</param>/// <param name="rarName">RAR压缩包名字</param>/// <returns></returns>public Process UnRARAsync(string fileFolder, string rarFolder, string rarName){string rarCmd;Process process;try{string exePath = GetExePath();Directory.CreateDirectory(fileFolder);//解压缩命令,相当于在要压缩文件(rarName)上点右键 ->WinRAR->解压到当前文件夹  rarCmd = string.Format(" x {0} {1} -y", rarFolder + "\\" + rarName, fileFolder);process = CreateRARProcess(rarFolder, rarCmd, exePath,true);process.Start();return process;}catch (Exception e){throw e;}}}
}

Demo_C#_Winform 压缩、解压缩相关推荐

  1. asp.net利用RAR实现文件压缩解压缩【月儿原创】

    asp.net利用RAR实现文件压缩解压缩 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.6.13 如果服务器上安装了RAR程 ...

  2. linux xz 解压initrd.img,2016-8-28 linux基础学习——压缩解压缩及归档 while脚本

    文件管理命令----压缩解压缩及归档基本工具 压缩.解压缩命令 压缩格式:gz, bz2, xz, zip, Z 压缩算法:算法不同,压缩比也会不同: 早期 压缩: compress(压缩比很小): ...

  3. linux如何查看归档文件,linux基本命令:文本搜索,拷贝文件,移动文件,归档管理,压缩解压缩文件,查看命令位置...

    1.文本搜索:grep grep查找的是文件内容中的文本,字符需要用引号括起来,单引双引都可以 格式:grep [-选项] '内容' 文件名 例如: -v显示不包含匹配文本的所有行(相当于求反) -n ...

  4. Linux压缩解压缩文章总结

    Linux中zip压缩和unzip解压缩命令详解 这篇文章主要介绍了zip/unzip压缩解压缩命令的使用方法及参数的说明 1.把/home目录下面的mydata目录压缩为mydata.zip zip ...

  5. Linux运维:常用的压缩解压缩命令(zip、tar)

    文章目录 压缩类型 zip类型 1.zip压缩 2.unzip解压缩 tar类型 1..tar压缩和解压 2..tar.gz压缩和解压 3..tar.bz2压缩和解压 4..tar.Z压缩和解压 5. ...

  6. Linux常用命令(第二版) --压缩解压缩命令

    压缩解压缩命令: ----------.gz---------- 1.压缩 gzip[GNU zip]: /bin/gzip 格式: gzip 选项 [文件] #压缩文件,压缩后扩展名为.gz,Lin ...

  7. 详解Linux的压缩解压缩命令

    1.性能稍差的两种压缩方式        gzip压缩        bzip2压缩 2.tar压缩 3.rar压缩 4.zip压缩 1. 性能稍差的两种压缩方式 1.1gzip压缩 1.gzip [ ...

  8. Linux压缩解压缩命令

    2019独角兽企业重金招聘Python工程师标准>>> 压缩文件可以为磁盘节省不少空间,那么Linux系统的压缩和解压缩命令都有哪些呢?下面小编就给大家介绍下Linux压缩和解压缩的 ...

  9. tar压缩解压缩命令详解

    tar压缩解压缩命令详解 tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个, ...

最新文章

  1. Javascript 获取和设置日期
  2. 小米MIX Alpha获得百万美金技术大奖;索尼或将推出无边框手机;Linus 不建议用 ZFS | 极客头条...
  3. JavaScript中this指针指向的彻底理解
  4. Redis使用详细教程
  5. Kickstart +ftp+dhcp+tftp实现Linux系统的无人值守安装
  6. 害!!安装电脑系统 分区就那么点事
  7. MathType如何编辑大三角形符号
  8. 国际短信平台的收费标准是什么?
  9. AOJ-AHU-OJ-401 Fibonacci GCD
  10. codeforces C. Multiples of Length
  11. SQL基础整理(四) 数据的插入,删除和更新,以及事物
  12. matlab正序零序负序,正序负序零序的理解
  13. python角谷猜想递归实现_第三周函数的递归---编程作业: 递归编程练习
  14. CRM系统部署模式有哪些
  15. Guava 常用 API
  16. Labview移位寄存器理解(例子说明)
  17. SpringBoot实现幕课网在线学习系统
  18. 实时去除浏览器缓存的文件,音频,视频,图片等
  19. 纸牌屋第一季(2)--part2
  20. 无胁科技-TVD每日漏洞情报-2022-10-26

热门文章

  1. CCTV4:中国智造亮出新名片,深兰科技熊猫公交驰骋粤港澳大湾区!
  2. 2022-2027年中国茶叶加工机械行业市场深度分析及投资战略规划报告
  3. 程序员必看:如何降低APP软件开发的成本?
  4. 买电脑主要看什么 买笔记本主要看什么
  5. 百度飞桨、郑州大学联合培养AI工程人才,破解无纺布瑕疵检测难题
  6. eslint :plugins和extends的区别
  7. valgrind基本功能介绍、基础使用方法说明
  8. 视频号如何快速引流精准客源;教你日引500+精准用户。
  9. 大数据分析结果告诉你:如何打造“爆款”文章?
  10. 深度学习 Deep Learning