C#压缩或解压rar、zip文件方法实例
前言
为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有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的安装位置,未安装则返回空字符串,最后并关闭注册表:
在c#.net中压缩解压zip文件
zip是一种免费开源的压缩格式,windows平台自带zip压缩和解压工具,由于算法是开源的,所以基于zip的解压缩开源库也很多,sharpziplib是一个很不错的c#库,它能够解压缩zip、gzip和tar格式的文件,首先下载sharpziplib解压后,在您的项目中引用icsharpcode.sharpzlib.dll程序集即可,下面是一些关于sharpziplib压缩和解压的示例。
使用.net中自带的类解压缩zip文件
微软在system.io.compression命名空间有一些关于文件解压缩的类,如果只是希望压缩解压zip和gzip格式的文件,是个不错的选择,在net framework 4.5框架中,原生system.io.compression.filesystem.dll程序集中新增了一个名为zipfile的类,,让压缩和解压zip文件变得更简单,zipfile的使用示例如下:
支持格式最多的c#解压缩开源库
当您还苦苦在为上面的各种压缩格式发愁的时候,一个名为sharpcompress的c#框架被开源,您可以在搜索引擎中找到sharpcompress框架的开源代码,它支持:rar 7zip, zip, tar, tzip和bzip2格式的压缩和解压,下面的示例直接从rar格式文件读取并解压文件。
总结
关于rar和zip格式相比,rar的压缩率比zip要高,而且支持分卷压缩,但rar是商业软件,需要付费,zip压缩率不如rar那么高,但开源免费,7zip格式开源免费,压缩率较为满意,这些压缩格式各有优势,就微软平台和一些开源平台来说,一般采用的都是zip格式,因为它更容易通过编程的方式实现,比rar更加可靠。
到此这篇关于c#压缩或解压rar、zip文件的文章就介绍到这了,更多相关c#压缩解压rar、zip内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!