GzipStream的简单使用压缩和解压
压缩和解压都需要用到三个流实例,分别是文件读取流、文件写入流、压缩流。
读取流和写入流有多种形式,压缩流就一种GzipStream。
不同的是对于压缩,是需要用文件写入流作为创建压缩流实例的参数,
压缩时是通过文件读取流读取文件,压缩流写入文件,这样就完成了压缩。
解压,是需要用文件读取流为参数创建压缩流实例,
通过压缩读取流读取文件,再通过文件写入流写入文件,这样就完成了解压。
这里解析一个枚举CompressionMode,它有两个值分别是Compress、DeCompress。
表示压缩和解压,在创建压缩流实例的时候会用到。
代码解析
压缩
- //1.创建读取文本文件的流
- using (FileStream fsRead = File.OpenRead("1.txt"))
- {
- //2.创建写文件流
- using (FileStream fsWrite = File.OpenWrite(@"C:\Users\john\Desktop\yasuo.rar"))
- {
- //3.创建压缩流
- using (GZipStream zipStream = new GZipStream(fsWrite, CompressionMode.Compress))
- {
- byte[] byts = new byte[1024];
- int len = 0;
- //4.通过读取文件流读取数据
- while ((len = fsRead.Read(byts, 0, byts.Length)) > 0)
- {
- //通过压缩流写入数据
- zipStream.Write(byts, 0, len);
- }
- }
- }
- }
解压
- //1.创建读取流
- using (FileStream fsRead = File.OpenRead(@"C:\Users\john\Desktop\yasuo.rar"))
- {
- //2.创建压缩流,把读取流作为参数,
- using (GZipStream zip = new GZipStream(fsRead, CompressionMode.Decompress))
- {
- //创建写入流
- using (FileStream fsWrite=File.OpenWrite(@"C:\Users\john\Desktop\1.txt"))
- {
- byte[] byts = new byte[];
- int len = ;//用于表示真是接受到是字节个数
- //通过压缩流读取数据
- while ((len=zip.Read(byts,,byts.Length))>)
- {
- //MessageBox.Show(Encoding.UTF8.GetString(byts.Take(len).ToArray()));
- //通过文件流写入文件
- fsWrite.Write(byts, , len);//读取的长度为len,这样不会造成数据的错误
- }
- }
- }
- }
GzipStream的简单使用压缩和解压的更多相关文章
- ruby利用Zip Gem写一个简单的压缩和解压的小工具
在UNIX下的我们怎么会沦落到用ruby写压缩和解压工具呢?直接上shell啊!但是请允许本猫这次可耻的用ruby来玩玩吧!其实ruby GEM中有很多压缩解压包,我选的是Zip,也许是因为名字符合K ...
- 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货
关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...
- 文件压缩和解压 FileStream GZipStream
using (FileStream reader=new FileStream (@"c:\1.txt",FileMode.Open,FileAccess.Read)) { usi ...
- 黄聪:.NET中zip的压缩和解压——SharpCompress
使用Packaging无法实现通用的zip(使用其他工具压缩)的解压,只支持通过Packaging压缩包zip的解压,而SharpZipLib是基于“GPL”开源方式,风险比较大.在codeplex找 ...
- java 文件压缩和解压(ZipInputStream, ZipOutputStream)
最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...
- C#实现通过Gzip来对数据进行压缩和解压
C#实现通过Gzip来对数据进行压缩和解压 internal static byte[] Compress(byte[] data) { using (var compressedStream = n ...
- .net文件压缩和解压及中文文件夹名称乱码问题
/**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...
- C#对文件操作(基本的读写以及压缩和解压)
主要是针对单个文件进行读写操作和压缩操作:用到的主要C#类有FileStream.FileInfo.StreamWrite.StreamRead.GZipStream. 字符数组和字节数组的转换: ] ...
- VB6进行GZIP解压&C#进行GZIP压缩和解压
VB进行GZIP解压的,DLL是系统的,如果没有 [点击下载] Option Explicit 'GZIP API '----------------------------------------- ...
随机推荐
- 写bug-free 的code
一个算法题目 写的没有bug,是件不easy的事情 必需要考虑全面,事实上就是你算法过程中,每一个变量是否适用,你的算法是在什么样的前提以下展开的 这个和參数检查是另外一件事情.參数检查被说的好像是一 ...
- BZOJ 3524 - 主席树
传送门 题目分析 标准主席树,按照位置插入每个数,对于询问l, r, 在l-1,r两树上按照线段树搜索次数大于(r - l + 1) / 2的数. code #include<bits/stdc ...
- 汉高澳大利亚matrix矩阵计算器
我在梦中的超级计算机超级计算机锯,使用大量阵列的cpu记忆,完成并行计算.一个手机制造商由于使用普通机械提供的服务,往往造成停机.是铁道部列车网络售票的事实. 无法使用云服务.上万台计算机并行处理,因 ...
- TCP基础
TCP基础知识 复习 前言 说来惭愧,大二时候学的计算机网络好多都不太记得了,不过还好有认真学过,捡起来也挺快的,就是对于现在业界中使用的网络算法的不是很懂: 1 TCP报文段结构 1.1 序号和 ...
- handsontable前端excel学习笔记
暂时没有好的中文资料,大概找了三遍随便看看,之后重点研究其github 1.Handsontable 学习笔记-Methods 2. Handsontable通用方法 3.handsontable的核 ...
- jquery 源码学习(二)
在网上找到一篇广为流传的文章<常用正则表达式>,逐一分析,不足地方进行补充和纠正 作者:nuysoft/JS攻城师/高云 QQ:47214707 EMail:nuysoft@gmail ...
- 至Linux-2.6.32编译内核ipset-6.23坎坷的经历
新的版本号ipset 上周,一名医生在儿童医院等待一段差距叫做数量.接受NetfilterPush信息的邮件列表,列表ipset最新6.23版本号的新功能,非常喜欢我现在需要的是,特别是timeout ...
- hudson搭建经验总结
作者:朱金灿 来源:http://blog.csdn.net/clever101 hudson 是一种革命性的开放源码 CI (持续集成)服务器,随着工程源码越来越庞大,把源码编译工作放在本地机器已不 ...
- End-to end provisioning of storage clouds
Embodiments discussed in this disclosure provide an integrated provisioning framework that automates ...
- C#获取windows 10的下载文件夹路径
Windows没有为“下载”文件夹定义CSIDL,并且通过Environment.SpecialFolder枚举无法使用它. 但是,新的Vista 知名文件夹 API确实使用ID定义它FOLDERID ...