为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar、zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库。

在C#.NET中压缩解压rar文件

rar格式是一种具有专利文件的压缩格式,是一种商业压缩格式,不开源,对解码算法是公开的,但压缩算法是私有的,需要付费,如果需要在您的商业软件中使用rar格式进行解压缩,那么你需要为rar付费,rar在国内很流行是由于盗版的存在,正因为算法是不开源的,所以我们压缩rar并没有第三方的开源库可供选择,只能另寻出路。

针对rar的解压缩,我们通常使用winrar,几乎每台机器都安装了winrar,对于普通用户来说它提供基于用户界面的解压缩方式,另外,它也提供基于命令行的解压缩方式,这为我们在程序中解压缩rar格式提供了一个入口,我们可以在C#程序中调用rar的命令行程序实现解压缩,思路是这样的:

1、判断注册表确认用户机器是否安装winrar程序,如果安装取回winrar安装目录。

2、创建一个命令行执行进程。

3、通过winrar的命令行参数实现解压缩。

首先我们通过下面的代码判断用户计算机是否安装了winrar压缩工具:

如果已经安装winrar可通过如下代码返回winrar的安装位置,未安装则返回空字符串,最后并关闭注册表:

1:判断注册表确认用户机器是否安装winrar程序,如果安装,取回winrar安装目录

/// <summary>
/// 判断注册表确认用户机器是否安装winrar程序,如果安装,取回winrar安装目录
/// </summary>
/// <returns>winrar安装目录</returns>
public static string ExistsWinRar()
{string result = string.Empty;string key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(key);if (registryKey != null){result = registryKey.GetValue("").ToString();}registryKey.Close();return result;
}

2:将格式为rar的压缩文件解压到指定的目录

/// <summary>
/// 将格式为rar的压缩文件解压到指定的目录
/// </summary>
/// <param name="rarFileName">要解压rar文件的路径</param>
/// <param name="saveDir">解压后要保存到的目录</param>
public static void DeCompressRar(string rarFileName, string saveDir)
{string regKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(regKey);string winrarPath = registryKey.GetValue("").ToString();registryKey.Close();string winrarDir = System.IO.Path.GetDirectoryName(winrarPath);String commandOptions = string.Format("x {0} {1} -y", rarFileName, saveDir);ProcessStartInfo processStartInfo = new ProcessStartInfo();processStartInfo.FileName = System.IO.Path.Combine(winrarDir, "rar.exe");processStartInfo.Arguments = commandOptions;processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;Process process = new Process();process.StartInfo = processStartInfo;process.Start();process.WaitForExit();process.Close();
}

3:将目录和文件压缩为rar格式并保存到指定的目录

/// <summary>
/// 将目录和文件压缩为rar格式并保存到指定的目录
/// </summary>
/// <param name="soruceDir">要压缩的文件夹目录</param>
/// <param name="rarFileName">压缩后的rar保存路径</param>
public static void CompressRar(string soruceDir, string rarFileName)
{string regKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(regKey);string winrarPath = registryKey.GetValue("").ToString();registryKey.Close();string winrarDir = System.IO.Path.GetDirectoryName(winrarPath);String commandOptions = string.Format("a {0} {1} -r", rarFileName, soruceDir);ProcessStartInfo processStartInfo = new ProcessStartInfo();processStartInfo.FileName = System.IO.Path.Combine(winrarDir, "rar.exe");processStartInfo.Arguments = commandOptions;processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;Process process = new Process();process.StartInfo = processStartInfo;process.Start();process.WaitForExit();process.Close();
}

使用C#压缩解压rar格式文件相关推荐

  1. Mac 解压rar格式文件(附解压工具包)

    Mac 解压rar格式文件* 工具包(zip格式):http://download.csdn.net/detail/u011445031/9854187 将工具包解压到你安装目录即可. 使用: 打开终 ...

  2. centos如何解压rar格式文件

    一.下载安装包 链接: link 二.解压安装包到当前文件夹 命令如下: tar -zxvf rarlinux-x64-5.3.0.tar.gz ** (以下为拓展,可跳过) ** 1.打包.tar. ...

  3. debian 中解压RAR格式文件

    首先安装工具  : apt-get install rar unrar     可能unrar不需要 解压命令 :rar x 123.rar

  4. linux解压rar文件权限,linux下使用unrar命令解压*.rar格式文件

    使用帮助 [user@localhost ~]$ unrar UNRAR 5.40 freeware      Copyright (c) 1993-2016 Alexander Roshal Usa ...

  5. linux unrar 密码,linux下使用unrar命令解压*.rar格式文件(示例代码)

    使用帮助 [[email protected] ~]$ unrar UNRAR 5.40 freeware      Copyright (c) 1993-2016 Alexander Roshal ...

  6. Linux 命令之 unrar -- 解压 rar 格式的文件

    文章目录 一.命令介绍 二.常用选项 三.命令示例 (一)按完整路径解压指定的压缩包到当前目录下 (二)按完整路径且不覆盖已存在文件的方式解压指定的压缩档案到指定的目录下 一.命令介绍 需要安装 ra ...

  7. linux解压rar多层文件夹,linux rar 解压文件夹_rar文件夹

    原标题:linux rar 解压文件夹_rar文件夹 本经验主要针对linux中的解压缩进行讲解工具/原料linux电脑一台linux文件解压缩1目前 rar a jpg.rar *.jpg //ra ...

  8. centos下解压rar格式文件

    [root@gaojingbo ~]# wget http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz [root@gaojingbo ~]# tar ...

  9. linux 解压rar格式的文件怎么打开,linux服务器怎么解压rar格式的文件

    做seo的很多人都会经历过这个问题,那就是安装的宝塔.wdcp等面板后,但是在上传完压缩文件的时候,发现压缩文件是rar后缀的压缩文件,在宝塔面板中就解压不了rar文件. 一.于是就想着把后缀改为zi ...

最新文章

  1. ASP.NET2.0轻松搞定统计图表【月儿原创】
  2. 德华安顾人寿签约神策数据,精耕数字化加速保险服务质效升级
  3. statistics DATA in CHINA
  4. netty系列之:中国加油
  5. java xml出错,Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException...
  6. C# 9 新特性 —— 补充篇
  7. win10网卡高级属性配置图解_简单设置,win10再也不会断网了
  8. godaddy修改php版本,Godaddy美国主机Plesk面板修改PHP版本教程
  9. 学习Linux的决心书
  10. python给用户打标签_用户画像—打用户行为标签
  11. 让控件如此丝滑Scroller和VelocityTracker的API讲解与实战——Android高级UI
  12. Python常用取整函数
  13. 模式识别谱聚类matlab,基因表达谱聚类分析
  14. python 基于卡方值分箱算法
  15. APP 对接 java 微信支付统一下单接口
  16. 在网上疯传的行动艺术照
  17. 如何反汇编exe之VB程序
  18. 用计算机程序实现离散化的对象模型,模糊PID应用
  19. 基于statsmodels的股票估值线性回归模型
  20. Python 教程之运算符(12)a += b 并不总是等价于 a = a + b

热门文章

  1. 我的世界JAVA挂机杀怪有经验_5分钟教你打造mc最简单的刷经验机!挂机就能无限经验?...
  2. 我的世界服务器无限刷凋零,《我的世界》高效刷凋零骷髅的方法
  3. NFT 的潜力:扩展的艺术品鉴定证书
  4. 射频工程师应该具备的知识技术体系和心态
  5. 蔡颖-《APS走向实践》书解读之三:供应、计划排程、供应链优化
  6. 针对RK3328平台搭建支持KVM的Linux环境
  7. 蓝牙也宽带 诺基亚3230蓝牙共享宽带教程(内网用户设置或网关无响应的解决)
  8. php判断无理数,关于e是无理数的证明
  9. 一个性价比超高的英语口语平台
  10. Jenkins里的Crumb