asp.net实现GZip压缩和GZip解压
生活随笔
收集整理的这篇文章主要介绍了
asp.net实现GZip压缩和GZip解压
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
最近在开发一个网站doc.115sou.com,使用到了GZip压缩技术,经过多次搜索找到asp.net中用GZip对数据压缩和解压缩非常方便,当我第一次拿到这个类的时候却感觉很迷茫,无从下手。主要是因为GZipStream的构造函数中第一个需要传入一个Stream,第二个是指定操作方式:压缩还是解压缩。
当时的疑问点主要有:
出现以上两点疑问,完全是我将GZipStream的用法理解反了。
其实GZipStream里面存的是已经压缩过的数据流,传入的Stream是作为基础Stream传入,如果要压缩,那你就可以传一个空的Stream进去,如果要解压,就将包含压缩数据的Stream传进去。
而GZipStream的读和写分别对应的是解压和压缩两个操作,知道了这些,使用起来就简单了。
写入的数据会被压缩后写入到传入的Stream中,读取的数据也是解压后的数据,可以直接写入到一个新的流中。
byte[] cbytes = null; //压缩using (MemoryStream cms = new MemoryStream()){using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(cms,System.IO.Compression.CompressionMode.Compress)){//将数据写入基础流,同时会被压缩byte[] bytes = Encoding.UTF8.GetBytes("解压缩测试");gzip.Write(bytes, 0, bytes.Length);}cbytes = cms.ToArray();} //解压using (MemoryStream dms = new MemoryStream()){using (MemoryStream cms = new MemoryStream(cbytes)){using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(cms, System.IO.Compression.CompressionMode.Decompress)){byte[] bytes = new byte[1024];int len = 0;//读取压缩流,同时会被解压while ((len = gzip.Read(bytes, 0, bytes.Length)) > 0){dms.Write(bytes, 0, len);}}}Console.WriteLine(Encoding.UTF8.GetString(dms.ToArray()));}
转载于:https://www.cnblogs.com/webapi/p/4364841.html
总结
以上是生活随笔为你收集整理的asp.net实现GZip压缩和GZip解压的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Mvc 自带分页控件PagedList.
- 下一篇: 谈谈游戏开发中用到设计模式