• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#操作压缩文件(rar,zip,gzip,winform/asp.net)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

从.NET 2.0开始,微软提供了一个 System.IO.Compression 的NameSpace,下含有 GZipStream 和 DeflateStream,都具有压缩和解压功能,但是,确不支持 ziprar等常用的压缩文件。因为rar是有版权的,不支持有情可原,但zip是开源的,也不支持就有点自私了(估计微软是为了自己的cab格式)

对于 rar 格式,我们可以直接利用WinRAR提供的rar.exe/unrar.exe(此文件在winrar的安装目录下,是一个console程序),这种情况,只能用于 winform 或者 在提权 的情况下,才能用于 asp.net ;

对于 zip 格式,我们这里推荐是用原生的C#类库,这种方式,可以适用于asp.net(要有目录的写权限),我推荐大家使用开源免费的 SharpZipLib

对于 rar.exe 的解压和压缩,下面先给出它的 命令行格式对照表,便于了解:

rar命令行的使用方法:

rar <命令> -<开关 1> -<开关 N> <压缩文件> <文件...> <@列表文件...> <解压路径\>

rar的命令列表:

 

rar 的开关列表:


rar使用的例子:

1、rar a file file.ext
如果file.rar不存在将创建file.rar文件;如果file.rar压缩包中已有file.ext,将更新压缩包中的file.ext

2、rar a file d:\*.ext

将d盘下所有ext文件(不包括自文件夹)添加到压缩包中

3、rar x Fonts *.ttf
从压缩文件中解压 *.ttf 字体文件到当前文件夹

4、rar x Fonts *.ttf NewFonts\

从压缩文件中解压 *.ttf 字体文件到 NewFonts 目录下

5、rar e -p密码 test.rar

将有密码test.rar文件,解压到当前文件夹


C#调用rar.exe解压一个rar文件到系统的临时目录:

//取得系统临时目录
string sysTempDir = Path.GetTempPath();

//要解压的文件路径,请自行设置
string rarFilePath = @"d:\test.rar";

//确定要解压到的目录,是系统临时文件夹下,与原压缩文件同名的目录里
string unrarDestPath = Path.Combine(sysTempDir,
    Path.GetFileNameWithoutExtension(rarFilePath));

//组合出需要shell的完整格式
string shellArguments = string.Format("x -o+ \"{0}\" \"{1}\\\"",
    rarFilePath, unrarDestPath);

//用Process调用
using (Process unrar = new Process())
{
    unrar.StartInfo.FileName = "rar.exe";
    unrar.StartInfo.Arguments = shellArguments;
    //隐藏rar本身的窗口
    unrar.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    unrar.Start();
    //等待解压完成
    unrar.WaitForExit();
    unrar.Close();
}

//统计解压后的目录和文件数
DirectoryInfo di = new DirectoryInfo(unrarDestPath);

MessageBox.Show(string.Format("解压完成,共解压出:{0}个目录,{1}个文件",
    di.GetDirectories().Length, di.GetFiles().Length));

例子代码下载

原文:http://www.zu14.cn/2008/12/31/net_package/


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
解决asp.net报错无法获取所需的权限错误发布时间:2022-07-10
下一篇:
C#与mysql做ASP.NET网页数据库查询速度测试发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap