压缩和解压都需要用到三个流实例,分别是文件读取流、文件写入流、压缩流。

读取流和写入流有多种形式,压缩流就一种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的简单使用压缩和解压的更多相关文章

  1. ruby利用Zip Gem写一个简单的压缩和解压的小工具

    在UNIX下的我们怎么会沦落到用ruby写压缩和解压工具呢?直接上shell啊!但是请允许本猫这次可耻的用ruby来玩玩吧!其实ruby GEM中有很多压缩解压包,我选的是Zip,也许是因为名字符合K ...

  2. 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货

    关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...

  3. 文件压缩和解压 FileStream GZipStream

    using (FileStream reader=new FileStream (@"c:\1.txt",FileMode.Open,FileAccess.Read)) { usi ...

  4. 黄聪:.NET中zip的压缩和解压——SharpCompress

    使用Packaging无法实现通用的zip(使用其他工具压缩)的解压,只支持通过Packaging压缩包zip的解压,而SharpZipLib是基于“GPL”开源方式,风险比较大.在codeplex找 ...

  5. java 文件压缩和解压(ZipInputStream, ZipOutputStream)

    最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...

  6. C#实现通过Gzip来对数据进行压缩和解压

    C#实现通过Gzip来对数据进行压缩和解压 internal static byte[] Compress(byte[] data) { using (var compressedStream = n ...

  7. .net文件压缩和解压及中文文件夹名称乱码问题

    /**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...

  8. C#对文件操作(基本的读写以及压缩和解压)

    主要是针对单个文件进行读写操作和压缩操作:用到的主要C#类有FileStream.FileInfo.StreamWrite.StreamRead.GZipStream. 字符数组和字节数组的转换: ] ...

  9. VB6进行GZIP解压&C#进行GZIP压缩和解压

    VB进行GZIP解压的,DLL是系统的,如果没有 [点击下载] Option Explicit 'GZIP API '----------------------------------------- ...

随机推荐

  1. ets学习

    http://diaocow.iteye.com/blog/1768647 http://www.cnblogs.com/me-sa/archive/2011/08/11/erlang0007.htm ...

  2. 小强的HTML5移动开发之路(27)—— JavaScript回顾2

    Javascript面向对象基础知识 1.如何定义一个类,使用如下语法来创建一个类 function Person(name, age){ //习惯上第一个字母大写 //this修饰的变量称为属性 t ...

  3. HDOJ 1261 字串数

    JAVA大数.... 字串数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  4. 每天一个JavaScript实例-铺货鼠标点击位置并将元素移动到该位置

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. 微信小程序实现城市定位:获取当前所在的国家城市信息

    微信小程序中,我们可以通过调用wx.getLocation()获取到设备当前的地理位置信息,这个信息是当前位置的经纬度.如果我们想获取当前位置是处于哪个国家,哪个城市等信息,该如何实现呢? 微信小程序 ...

  6. selenium + firefox登录空间

    在网上看到的大部分都是Python版本的,于是写了个java版本的 环境: selenium-java 3.9.1 firefox 57.0 geckodriver 0.19.1 firefox与ge ...

  7. 关于java项目与web项目中lib包的那点事

    一.在java项目中如何引入外部jar包:1.在我们的java项目下新建一个lib文件夹:2.将我们需要引入的jat包复制到lib文件夹下:3.选中我们lib包下的jar,右键选择Build Path ...

  8. Objective-C 数据类型 (一)

    数据类型分为三类:基本数据类型,对象类型,id类型. 基本数据类型:int ,float double char 对象类型:类,指针对象,协议 id类型:可以表示对象类型(在表示对象类型的时候 不需要 ...

  9. Acdreamoj1116(Gao the string!)弦hash+二分法+矩阵高速功率

    Problem Description give you a string, please output the result of the following function mod 100000 ...

  10. 强烈推荐node包colors

    库链接:colors 在你的 node.js 控制台中获取颜色