DeflateStream类

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();
        }
    }
时间: 2024-10-13 15:44:06

DeflateStream类的相关文章

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

C#编程总结(十三)数据压缩 在进行文件存储或者数据传输时,为了节省空间流量,需要对数据或文件进行压缩.在这里我们讲述通过C#实现数据压缩. 一.GZipStream压缩 微软提供用于压缩和解压缩流的方法. 此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法. 这种格式包括一个检测数据损坏的循环冗余校验值. GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩展以使用其他压缩格式. 这种格式可以通过不涉及专利使用权的方式轻松实现. 可以使用许多

文件和流(使用流读写文件)

.NET Framework 在框架的多个领域里使用了流模型.流是允许你用相似的方式(作为顺序字节流)对待不同数据源的一种抽象.所有 .NET 流类从 System.IO.Stream 类继承. 流可以代表内存缓冲器中的数据.从网络连接获得的数据.从文件获得的或要写入文件的数据. 下面这段代码演示了如何创建一个新文件并用 FileStream 写入一个字节数组: FileStream fileStream = null; try { fileStream = new FileStream(fil

.net GZipStream 压缩与解压

简介: GzipStream表示GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法. 这种格式包括一个检测数据损坏的循环冗余校验值. GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩展以使用其他压缩格式. 这种格式可以通过不涉及专利使用权的方式轻松实现. 实际使用中因为涉及到网络传输大量数据,直接传送简直不能忍,用GzipStream压缩了一下后再传输流量立即下降了80%,,主要是因为ASCII文本格式有比较高的压缩率所以会比较高. GzipStre

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

有些对象需要显示地销毁代码来释放资源,比如打开的文件资源,锁,操作系统句柄和非托管对象.在.NET中,这就是所谓的对象销毁,它通过IDisposal接口来实现.不再使用的对象所占用的内存管理,必须在某个时候回收:这个被称为无用单元收集的功能由CLR执行. 对象销毁和垃圾回收的区别在于:对象销毁通常是明确的策动:而垃圾回收完全是自动地.换句话说,程序员负责释放文件句柄,锁,以及操作系统资源:而CLR负责释放内存. 本章将讨论对象销毁和垃圾回收,还描述了C#处理销毁的一个备选方案--Finalize

基本的文件 I/O

基本的文件 I/O MSDN 抽象基类 Stream 支持读取和写入字节.Stream 集成了异步支持.其默认实现根据其相应的异步方法来定义同步读取和写入,反之亦然. 所有表示流的类都是从 Stream 类继承的.Stream 类及其派生类提供数据源和储存库的一般视图,使程序员不必了解操作系统和基础设备的具体细节. 流涉及三个基本操作: 可以从流读取.读取是从流到数据结构(如字节数组)的数据传输. 可以向流写入.写入是从数据源到流的数据传输. 流可以支持查找.查找是对流内的当前位置进行的查询和修

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

压缩文本.字节或者文件的压缩辅助类-GZipHelper 欢迎收藏 下面为大家介绍一.NET下辅助公共类GZipHelper,该工具类主要作用是对文本.字符.文件等进行压缩与解压.该类主要使用命名空间:System.IO.Compression下的GZipStream类来实现.  此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法.这种格式包括一个检测数据损坏的循环冗余校验值.GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩展以使用其他压缩

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

下面为大家介绍一.NET下辅助公共类GZipHelper,该工具类主要作用是对文本.字符.文件等进行压缩与解压.该类主要使用命名空间:System.IO.Compression下的GZipStream类来实现.  此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法.这种格式包括一个检测数据损坏的循环冗余校验值.GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩展以使用其他压缩格式.这种格式可以通过不涉及专利使用权的方式轻松实现.gzip 的格

HttpWebRequest 模拟登录响应点击事件(开源自己用的HttpHelper类)

平时也经常采集网站数据,也做模拟登录,但一般都是html控件POST到页面登录:还没有遇到用户服务器控件button按钮点击事件登录的,今天像往常一样POST传递参数,但怎么都能登录不了:最后发现还有两个参数需要传,__EVENTVALIDATION和__VIEWSTATE 在传的过程中需要对参数值进行URL编码 System.Web.HttpUtility.UrlEncode(value) 模拟登录代码:在本地写的一个测试的网站来模拟登录,原理都一样: Request request = ne

C# 文件操作类大全

1.创建文件夹 //using    System.IO;   Directory.CreateDirectory(%%1); 2.创建文件 //using   System.IO;   File.Create(%%1); 3.删除文件夹//using System.IO;Directory.Delete(%%1); 4.删除文件  //using   System.IO;  File.Delete(%%1); 5.删除一个目录下所有的文件夹 1 //using 2 System.IO; 3 f