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.
- 下一篇: 谈谈游戏开发中用到设计模式