做web技术有时候要向客户返回一些文件如:excel、word、甚至是一些视频、音频等。但当数据量过大的时候,我们可能要考虑到用要用压缩(或者批量压缩)处理的方式把问价传送给客户端。下面介绍一种功能较为稳定的压缩、解压工具。此处以压缩为例。

第一步:要下载一个第三方的解、压缩组件叫: ICSharpCode.SharpZipLib.dll

第二步:引入到项目的解决方案中。

以上准备工作做好以后下面开干(一下实例为压缩多个文件):

首先在button的click事件中调用压缩的方法:

protected void btnExportZip_Click(object sender, EventArgs e)
        {

// 定义一个泛型集合去存储要压缩的源文件的信息
                List<FileInfo> fileInfos = new List<FileInfo>();

// 要压缩的问价名集合一个文件名集合

string[] Names = {@"H:/demo1.xls", @"H:/demo2.xls"};
                foreach (string filename in Names)
                {
                    FileInfo file = new FileInfo(filename); // 根据返回的文件名获取文件的信息
                    fileInfos.Add(file); // 添加文件到信息集合
                }

// 存储压缩文件名,用GUID防止多次压缩后的文件重复。 Server.MapPath("./excelCD/")为服务器下的一个文件夹存储压缩文件

string zipFileName = Server.MapPath("./excelCD/") + "userInfo" + Guid.NewGuid().ToString() + ".zip"; 
                File.WriteAllText(zipFileName, "");  // 创建空文件

Compress(fileInfos, zipFileName, 2, 800);  // 调用压缩方法
          
        }

// 参数依次为:文件信息集合,准备压缩到的文件名,压缩质量(0~9依次增加),休眠时间(单位:毫秒)

public static void Compress(List<FileInfo> fileNames, string zipFileName, int CompressionLevel, int SleepTimer)
        {
            ZipOutputStream s = new ZipOutputStream(File.Create(zipFileName));
            try
            {
                s.SetLevel(CompressionLevel);   
                foreach (FileInfo file in fileNames)
                {
                    FileStream fs = null;
                    try
                    {
                        fs = file.Open(FileMode.Open, FileAccess.ReadWrite);
                    }
                    catch
                    {

continue;

}
                    //  将文件分批读入缓冲区  
                    byte[] data = new byte[2048];
                    int size = 2048;
                    ZipEntry entry = new ZipEntry(Path.GetFileName(file.Name));
                    entry.DateTime = (file.CreationTime > file.LastWriteTime ? file.LastWriteTime : file.CreationTime);
                    s.PutNextEntry(entry);
                    while (true)
                    {
                        size = fs.Read(data, 0, size);
                        if (size <= 0) break;
                        s.Write(data, 0, size);
                    }
                    fs.Close();
                    file.Delete();
                    Thread.Sleep(SleepTimer);
                }
            }
            finally
            {
                s.Finish();
                s.Close();
            }
        }

// 做完以上操作就能够找到自己压缩的文件了,但是这只是把文件压缩到自己的服务器上,如果要把压缩后的文件推送到客户端就要用到另一种技术了,请参考我的博客“将文件传送到客户端”

.net 压缩、解压文件相关推荐

  1. 测试掌握的Linux解压,轻松掌握Linux压缩/解压文件的方法

    对于在Linux下解压大型的*.zip文件,相信大家一般都会通过使用winrar直接在smb中来进行解压的操作,虽然说最终可能能够解压但有时候会存在解压时间长或者网络原因出错等故障的情况出现.那么有没 ...

  2. java代码实现解压文件_Java压缩/解压文件的实现代码

    用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; impo ...

  3. 命令行下(bat)使用 Lhaplus 自动 压缩 解压文件 (含参数设定说明)

    命令行下(bat)使用 Lhaplus 自动 压缩 解压文件,参数设定 https://mp.csdn.net/console/editor/html/104400832 ■前言 准备测试数据,要压缩 ...

  4. WinRAR压缩解压文件

    使用WinRAR压缩管理器压缩解压文件详细步骤如下: ■ 压缩文件 ① 鼠标右键需要压缩的文件,点击"添加到压缩文件",具体操作步骤如图所示: ② 压缩后的对应文件压缩包会显示在桌 ...

  5. zip包怎么解压oracle,使用jar与zip压缩解压文件的区别

    使用jar命令压缩和解压文件不会继承原来的权限,切记! 而使用zip/unzip压缩解压文件则会保留文件原来的权限等信息,因此使用压缩解压的时候尽量使用专业的工具 下面是测试内容和结果: 1.首先确认 ...

  6. android zip解压出错,常见的压缩解压文件出错解决办法

    您是否遇到过精力了好久下回来的压缩吧,结果在解压过程中出现错误的情况呢?比如说此解压失败或压缩文件文件已经损坏?导致解压文件失败.如果遇到这种问题,那就试试常见的压缩解压文件出错解决办法吧.凡事求人不 ...

  7. tar多线程压缩解压文件

    tar多线程压缩解压文件 tar -czvf a.tar.gz ./* 测试每分钟压缩包a.tar.gz增长大约300M 安装多线程程序 yum -y install pigz 实测,4核的机器,2G ...

  8. 通过C#代码 压缩/解压文件

    通过引用一DLL(ICSharpCode.dll)可以实现所述功能... 一.压缩文件 using System; using ICSharpCode.SharpZipLib; using ICSha ...

  9. Node rar压缩/解压文件

    暂时未发现node有好用的rar解压/压缩库,所以就自己搜索了一下,简单写了一个,并做了个简单的封装. rar文件的压缩/解压是通过命令行来完成的,所以就需要node 的child_process库, ...

  10. 使用C#压缩解压文件

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

最新文章

  1. 重新定位开放策略 保卫中国经济版图
  2. JQuery 匿名函数初识(转载)
  3. R语言教程:生存分析
  4. android webview拍照,在android 2.2/2.3中使用webview从camera中照相并且上传的实现
  5. ELK 构建 MySQL 慢日志收集平台详解
  6. 数学C语言编程,数学规划 (最速下降法,c语言编程).doc
  7. python3 web界面_python3 web更新和web查看日志的功能
  8. 使用git时提示Could not create directory #39;%USERPROFILE%/.ssh#39;.percent_expand:unkown key %U...
  9. CSS3和js炫酷点击按钮3D翻转动画特效
  10. PHP正则获取HTML里需要的数据
  11. 编码基本功:性能测试工具可用于检查死循环
  12. Openfire服务器配置(Windows)
  13. 海洋磁力探测-G882海洋磁力仪内业处理软件MAP2000 操作指南
  14. 日知录(15):记药盒的串口通信
  15. 计算机软件实习实验二
  16. 手机端input[type=date]的时候placeholder不起作用解决方案
  17. tcpreplay 流量拆分算法研究
  18. 考研高等数学张宇30讲笔记——第三讲 函数极限与连续性
  19. 信息论与编码冯桂周林著答案_信息论与编码.冯桂 周林 冯桂、周林 9787302424277 清华大学出版社 信息论与编码.冯桂 周林 正版图书...
  20. OWASP ZAP mac chrome代理配置取消URL强制Https【已解决】

热门文章

  1. QFileDialog界面英文显示
  2. 基于SVM的近红外光谱分类
  3. Excel中最实用的快捷键「Ctrl+E」自动填充!
  4. springboot 上传文件到fastDFS文件服务器发生com.github.tobato.fastdfs.exception.FdfsIOException异常
  5. 2017海尔顺逛发展战略发布:诚信平台引爆社群经济
  6. 2021年社群活跃应该这么玩
  7. MSP430定时器、中断
  8. Python蟒蛇绘制:turtle图常用指令
  9. FLV视频流编解码知识
  10. 使用Rancher 安装K8S