DeflateStream是另外一种压缩与解压缩流,使用方法与GZipStream类似,而且压缩之后的带下也差不多。

一、属性

BaseStream     获取对基础流的引用。 
CanRead        获取一个值,该值指示流是否支持在解压缩文件的过程中读取文件。 (重写 Stream..::.CanRead。) 
CanSeek        获取一个值,该值指示流是否支持查找。 (重写 Stream..::.CanSeek。) 
CanTimeout     获取一个值,该值确定当前流是否可以超时。 (继承自 Stream。) 
CanWrite       获取一个值,该值指示流是否支持写入。 (重写 Stream..::.CanWrite。) 
Length        此属性不受支持,并且总是引发 NotSupportedException。 (重写 Stream..::.Length。) 
Position       此属性不受支持,并且总是引发 NotSupportedException。 (重写 Stream..::.Position。) 
ReadTimeout       获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试读取多长时间。 (继承自 Stream。) 
WriteTimeout    获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试写入多长时间。 (继承自 Stream。)

二、方法

BeginRead       开始异步读操作。 (重写 Stream..::.BeginRead(array<Byte>[]()[], Int32, Int32, AsyncCallback, Object)。) 
BeginWrite        开始异步写操作。 (重写 Stream..::.BeginWrite(array<Byte>[]()[], Int32, Int32, AsyncCallback, Object)。) 
Close          关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)。 (继承自 Stream。) 
CreateObjRef      创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。) 
Dispose          已重载。 
EndRead         等待挂起的异步读取完成。 (重写 Stream..::.EndRead(IAsyncResult)。) 
EndWrite        结束异步写操作。 (重写 Stream..::.EndWrite(IAsyncResult)。) 
Flush          将当前流对象的内部缓冲区的内容刷新到基础流。 (重写 Stream..::.Flush()()()。) 
GetLifetimeService   检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。) 
InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。) 
MemberwiseClone    已重载。 
Read           将若干解压缩的字节读入指定的字节数组。 (重写 Stream..::.Read(array<Byte>[]()[], Int32, Int32)。) 
ReadByte        从流中读取一个字节,并将流内的位置向前推进一个字节,或者如果已到达流的末尾,则返回 -1。 (继承自 Stream。) 
Seek           此操作不受支持,它总是引发 NotSupportedException。 (重写 Stream..::.Seek(Int64, SeekOrigin)。) 
SetLength       此操作不受支持,它总是引发 NotSupportedException。 (重写 Stream..::.SetLength(Int64)。) 
Write          从指定的字节数组中将压缩的字节写入基础流。 (重写 Stream..::.Write(array<Byte>[]()[], Int32, Int32)。) 
WriteByte       将一个字节写入流内的当前位置,并将流内的位置向前推进一个字节。 (继承自 Stream。)

        static void Main(string[] args)
{
FileStream fs = new FileStream(@"E:\file.txt",FileMode.Open,FileAccess.ReadWrite);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes,0,(int)fs.Length);
DeflateStream ds = new DeflateStream(fs,CompressionMode.Compress);
Console.WriteLine(ds.CanRead); //False 不可读
Console.WriteLine(ds.CanWrite); //True 可写
Console.WriteLine(ds.CanTimeout); //False 不支持超时
//Console.WriteLine(ds.Length); //不支持Lenth
//Console.WriteLine(ds.Position); //不支持Position
//Console.WriteLine(ds.ReadTimeout); //不支持超时,抛出异常
//Console.WriteLine(ds.WriteTimeout); //不支持超时,抛出异常 FileStream fs1 = new FileStream(@"E:\file1.txt", FileMode.Create, FileAccess.Write);
DeflateStream ds1 = new DeflateStream(fs1, CompressionMode.Compress);
ds1.Write(bytes, 0, bytes.Length); //会调用基流的Write方法,在E盘生成E:\file1.txt,里面是压缩后的内容 //解压缩后输出
FileStream fs2 = new FileStream(@"E:\file1.txt", FileMode.Open, FileAccess.Read);
byte[] byte1 = new byte[fs2.Length];
DeflateStream ds2 = new DeflateStream(fs2, CompressionMode.Decompress, true);
StreamReader streamR = new StreamReader(ds2, Encoding.Default);
string str = streamR.ReadToEnd();
Console.WriteLine(str); //输出解压之后的内容了 好长的 Console.ReadKey();
}
}

DeflateStream类的更多相关文章

  1. 浅谈 ZipArchive 类

    Microsoft .NET Framework 4.5 新增了 ZipArchive 类 Microsoft Windows 8 Consumer Preview 操作系统已经内置了 Microso ...

  2. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  3. 压缩文本、字节或者文件的压缩辅助类-GZipHelper

    下面为大家介绍一.NET下辅助公共类GZipHelper,该工具类主要作用是对文本.字符.文件等进行压缩与解压.该类主要使用命名空间:System.IO.Compression下的GZipStream ...

  4. C#编程总结(十三)数据压缩

    C#编程总结(十三)数据压缩 在进行文件存储或者数据传输时,为了节省空间流量,需要对数据或文件进行压缩.在这里我们讲述通过C#实现数据压缩. 一.GZipStream压缩 微软提供用于压缩和解压缩流的 ...

  5. 压缩文本、字节或者文件的压缩辅助类-GZipHelper 欢迎收藏

    压缩文本.字节或者文件的压缩辅助类-GZipHelper 欢迎收藏 下面为大家介绍一.NET下辅助公共类GZipHelper,该工具类主要作用是对文本.字符.文件等进行压缩与解压.该类主要使用命名空间 ...

  6. c# -- 对象销毁和垃圾回收

    有些对象需要显示地销毁代码来释放资源,比如打开的文件资源,锁,操作系统句柄和非托管对象.在.NET中,这就是所谓的对象销毁,它通过IDisposal接口来实现.不再使用的对象所占用的内存管理,必须在某 ...

  7. 基本的文件 I/O

    基本的文件 I/O MSDN 抽象基类 Stream 支持读取和写入字节.Stream 集成了异步支持.其默认实现根据其相应的异步方法来定义同步读取和写入,反之亦然. 所有表示流的类都是从 Strea ...

  8. WCF Restful Service的服务

    构建基于WCF Restful Service的服务 前言 传统的Asmx服务,由于遵循SOAP协议,所以返回内容以xml方式组织.并且客户端需要添加服务端引用才能使用(虽然看到网络上已经提供了这方面 ...

  9. GZipStream 压缩与解压数据

    简介:此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法.这种格式包括一个检测数据损坏的循环冗余校验值.GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但 ...

随机推荐

  1. bzoj3431 [Usaco2014 Jan]Bessie Slows Down

    Description [Brian Dean, 2014] Bessie the cow is competing in a cross-country skiing event at the wi ...

  2. lazy load 图片延迟加载 跟随滚动条

    http://plugins.jquery.com/lazyload/ Jquery.LazyLoad.js插件参数详解: 1,用图片提前占位 placeholder : "img/grey ...

  3. Nim Game 解答

    Question You are playing the following Nim Game with your friend: There is a heap of stones on the t ...

  4. Search for a Range 解答

    Question Given a sorted array of integers, find the starting and ending position of a given target v ...

  5. ecshop 管理员不需要旧密码

  6. struts2——配置struts.xml文件

    在struts2框架中struts.xml是应当放到src的根目录,程序编译后会将struts.xml放到WEB-INF/classes目录下. Struts2在web.xml中的一般配置如下: &l ...

  7. 45 个非常有用的 Oracle 查询语句(转)

    这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收 ...

  8. hdu4506小明系列故事——师兄帮帮忙 (用二进制,大数高速取余)

    Problem Description 小明自从告别了ACM/ICPC之后,就開始潜心研究数学问题了,一则能够为接下来的考研做准备,再者能够借此机会帮助一些同学,尤其是美丽的师妹.这不,班里唯一的女生 ...

  9. Juqery 中使用 ajax

    从 test.js 载入 JSON 数据,附加参数,显示 JSON 数据中一个 name 字段数据. jQuery 代码: $.getJSON("test.js", { name: ...

  10. WEB服务器6--IIS架构补充篇

    第一部分我将谈谈IIS的两个不同的版本—IIS 5.x 和 IIS 6的处理模型:IIS如何监听来自外界的Http request,如何根据ISAPI Extension Mapping将对于不同Re ...