热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何压缩多个文件/文件夹(GZipStreamandC#)

如何压缩多个文件文件夹(GZipStreamandC#)在.NetFramework2.0中添加了System.IO.Compression类来实现对文件的压缩解压(GZi

如何压缩多个文件/文件夹(GZipStream and C#)


.Net Framework 2.0 中添加了System.IO.Compression 类来实现对文件的压缩/解压(GZipStream方法),下面我们来看一个简单的例子.

Code1:

 1          public   static   void  Compress( string  filePath,  string  zipPath)
 2          {
 3            FileStream sourceFile = File.OpenRead(filePath);
 4            FileStream destinationFile = File.Create(zipPath);
 5            byte[] buffer = new byte[sourceFile.Length];
 6            GZipStream zip = null;
 7            try
 8            {
 9                sourceFile.Read(buffer, 0, buffer.Length);
10                zip = new GZipStream(destinationFile, CompressionMode.Compress);
11                zip.Write(buffer, 0, buffer.Length);
12            }

13            catch
14            {
15                throw;
16            }

17            finally
18            {
19                zip.Close();
20                sourceFile.Close();
21                destinationFile.Close();
22            }

23        }

24
25          public   static   void  Decompress( string  zipPath, string  filePath)
26          {
27            FileStream sourceFile = File.OpenRead(zipPath);
28
29            string path = filePath.Replace(Path.GetFileName(filePath), "");
30
31            if(!Directory.Exists(path))
32                Directory.CreateDirectory(path);
33
34            FileStream destinationFile = File.Create(filePath);
35            GZipStream unzip = null;
36            byte[] buffer = new byte[sourceFile.Length];
37            try
38            {
39                unzip = new GZipStream(sourceFile, CompressionMode.Decompress, true);
40                int numberOfBytes = unzip.Read(buffer, 0, buffer.Length);
41
42                destinationFile.Write(buffer, 0, numberOfBytes);
43            }

44            catch
45            {
46                throw;
47            }

48            finally
49            {
50                sourceFile.Close();
51                destinationFile.Close();
52                unzip.Close();
53            }

54        }

 

用例:

1.压缩

1              string  folder  =  Path.Combine(Server.MapPath( " ~ " ),  " TestCompress " );//获取当前地址
2              string  file  =   " file1.txt " ;//需要压缩的文件
3              string  zip  =   " myzip " ;//保存文件名
4             //压缩
5             SampleCompress.Compress(Path.Combine(folder, file), Path.Combine(folder, zip));

2.解压

1              string  folder  =  Path.Combine(Server.MapPath( " ~ " ),  " TestCompress " );
2              string  file  =   " file1.txt " ; // 需要压缩的文件
3              string  zip  =   " myzip " ; //保存文件名
4             //解压
5             SampleCompress.Decompress(Path.Combine(folder, zip),
 Path.Combine(Path.Combine(folder, 
" zipfolder " ), file));
推荐阅读
  • Linux操作系统回炉复习各种常用命令集合解析
    Linux操作系统回炉复习各种常用命令集合解析猿码互联猿码互联今天Linux终端命令格式目标了解终端命令格式知道如何查阅终端命令帮助信息01.终端命令格式command[ ... [详细]
  • Linux操作系统学习笔记4【文件管理与常用命令】
    文件目录:一:Linux文件基础知识1.Linux常用文件类别2.Linux目录结构概述3.Linux目录常见概念4.Linux系统目录及说明 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 本文介绍了在Linux系统下进行文件压缩与解压的常用命令,包括tar命令的基本使用和参数,以及gzip、bz2、compress、rar和zip等不同格式的压缩与解压方法。同时还提供了常见的压缩文件后缀名及对应的解压命令,方便用户进行文件的压缩和解压操作。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • mapreduce原理_MapReduce原理及WordCount实践
    参考链接:https:www.cnblogs.comlaowangcp8961946.html一、MapReduce流程1.1Mapreduce整体流程: ... [详细]
  • 1.man(相当于cmd--help)对不熟悉的命令想查询详细使用方法的帮助解释可以使用eg:manls就可以查看ls相关的用法注: ... [详细]
  • 本文目录一览:1、如何搭建php服务器2、如何 ... [详细]
  • 项目地址:https:github.comthe-xentropyxencrypt原文链接:http:caidaome.com?post246Xenc ... [详细]
  • 我用的nginx是1.6。配置文件中写了gzip的。见下 ... [详细]
author-avatar
兴霖先玲广_215
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有