在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
从.NET 2.0开始,微软提供了一个 System.IO.Compression 的NameSpace,下含有 GZipStream 和 DeflateStream,都具有压缩和解压功能,但是,确不支持 zip 和 rar等常用的压缩文件。因为rar是有版权的,不支持有情可原,但zip是开源的,也不支持就有点自私了(估计微软是为了自己的cab格式) 对于 rar 格式,我们可以直接利用WinRAR提供的rar.exe/unrar.exe(此文件在winrar的安装目录下,是一个console程序),这种情况,只能用于 winform 或者 在提权 的情况下,才能用于 asp.net ; 对于 zip 格式,我们这里推荐是用原生的C#类库,这种方式,可以适用于asp.net(要有目录的写权限),我推荐大家使用开源免费的 SharpZipLib 。 对于 rar.exe 的解压和压缩,下面先给出它的 命令行格式对照表,便于了解:
rar <命令> -<开关 1> -<开关 N> <压缩文件> <文件...> <@列表文件...> <解压路径\> rar的命令列表:
rar 的开关列表: rar使用的例子:1、rar a file file.ext 2、rar a file d:\*.ext 将d盘下所有ext文件(不包括自文件夹)添加到压缩包中 3、rar x Fonts *.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/ |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论