zoukankan      html  css  js  c++  java
  • C#操作压缩文件(rar,zip,gzip,winform/asp.net)

    从.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 的开关列表:

    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));
  • 相关阅读:
    百度云推送
    web请求报出 “超过了最大请求长度” 【注意:重启IIS】
    页面多个Jquery版本共存的冲突问题,解决方法!
    Web Api 中使用 PCM TO WAV 的语音操作
    Web Api 如何做上传文件的单元测试
    那些年收集的前端学习资源
    原创: 做一款属于自己风格的音乐播放器 (HTML5的Audio新特性)
    Web Api 接口文档制作
    如何在Asp.Net WebApi接口中,验证请求参数中是否携带token标识!
    JavaScript 面试题,给大家补补基础,加加油,埋埋坑!
  • 原文地址:https://www.cnblogs.com/wequst/p/1371760.html
Copyright © 2011-2022 走看看