Demo_C#_Winform 压缩、解压缩
由于版本更新需要,研究了下调用WinRAR软件进行解压缩。
- 获取WinRAR应用程序路径:通过注册表,获取exe路径;我的Win10是"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe"。其他系统不知道有没有变化,可以自己打开注册表去检查下。
- 创建Process类操作WinRAR应用程序:配置好ProcessStartInfo参数(在ProcessStartInfo参数中可以对Arguments 的赋值,传入RAR命令符)
- 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 压缩、解压缩相关推荐
- asp.net利用RAR实现文件压缩解压缩【月儿原创】
asp.net利用RAR实现文件压缩解压缩 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/ 时间:2007.6.13 如果服务器上安装了RAR程 ...
- linux xz 解压initrd.img,2016-8-28 linux基础学习——压缩解压缩及归档 while脚本
文件管理命令----压缩解压缩及归档基本工具 压缩.解压缩命令 压缩格式:gz, bz2, xz, zip, Z 压缩算法:算法不同,压缩比也会不同: 早期 压缩: compress(压缩比很小): ...
- linux如何查看归档文件,linux基本命令:文本搜索,拷贝文件,移动文件,归档管理,压缩解压缩文件,查看命令位置...
1.文本搜索:grep grep查找的是文件内容中的文本,字符需要用引号括起来,单引双引都可以 格式:grep [-选项] '内容' 文件名 例如: -v显示不包含匹配文本的所有行(相当于求反) -n ...
- Linux压缩解压缩文章总结
Linux中zip压缩和unzip解压缩命令详解 这篇文章主要介绍了zip/unzip压缩解压缩命令的使用方法及参数的说明 1.把/home目录下面的mydata目录压缩为mydata.zip zip ...
- Linux运维:常用的压缩解压缩命令(zip、tar)
文章目录 压缩类型 zip类型 1.zip压缩 2.unzip解压缩 tar类型 1..tar压缩和解压 2..tar.gz压缩和解压 3..tar.bz2压缩和解压 4..tar.Z压缩和解压 5. ...
- Linux常用命令(第二版) --压缩解压缩命令
压缩解压缩命令: ----------.gz---------- 1.压缩 gzip[GNU zip]: /bin/gzip 格式: gzip 选项 [文件] #压缩文件,压缩后扩展名为.gz,Lin ...
- 详解Linux的压缩解压缩命令
1.性能稍差的两种压缩方式 gzip压缩 bzip2压缩 2.tar压缩 3.rar压缩 4.zip压缩 1. 性能稍差的两种压缩方式 1.1gzip压缩 1.gzip [ ...
- Linux压缩解压缩命令
2019独角兽企业重金招聘Python工程师标准>>> 压缩文件可以为磁盘节省不少空间,那么Linux系统的压缩和解压缩命令都有哪些呢?下面小编就给大家介绍下Linux压缩和解压缩的 ...
- tar压缩解压缩命令详解
tar压缩解压缩命令详解 tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个, ...
最新文章
- Javascript 获取和设置日期
- 小米MIX Alpha获得百万美金技术大奖;索尼或将推出无边框手机;Linus 不建议用 ZFS | 极客头条...
- JavaScript中this指针指向的彻底理解
- Redis使用详细教程
- Kickstart +ftp+dhcp+tftp实现Linux系统的无人值守安装
- 害!!安装电脑系统 分区就那么点事
- MathType如何编辑大三角形符号
- 国际短信平台的收费标准是什么?
- AOJ-AHU-OJ-401 Fibonacci GCD
- codeforces C. Multiples of Length
- SQL基础整理(四) 数据的插入,删除和更新,以及事物
- matlab正序零序负序,正序负序零序的理解
- python角谷猜想递归实现_第三周函数的递归---编程作业: 递归编程练习
- CRM系统部署模式有哪些
- Guava 常用 API
- Labview移位寄存器理解(例子说明)
- SpringBoot实现幕课网在线学习系统
- 实时去除浏览器缓存的文件,音频,视频,图片等
- 纸牌屋第一季(2)--part2
- 无胁科技-TVD每日漏洞情报-2022-10-26