asp.net实现GZip压缩和GZip解压
生活随笔
收集整理的這篇文章主要介紹了
asp.net实现GZip压缩和GZip解压
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近在開發(fā)一個網(wǎng)站doc.115sou.com,使用到了GZip壓縮技術(shù),經(jīng)過多次搜索找到asp.net中用GZip對數(shù)據(jù)壓縮和解壓縮非常方便,當我第一次拿到這個類的時候卻感覺很迷茫,無從下手。主要是因為GZipStream的構(gòu)造函數(shù)中第一個需要傳入一個Stream,第二個是指定操作方式:壓縮還是解壓縮。
當時的疑問點主要有:
出現(xiàn)以上兩點疑問,完全是我將GZipStream的用法理解反了。
其實GZipStream里面存的是已經(jīng)壓縮過的數(shù)據(jù)流,傳入的Stream是作為基礎Stream傳入,如果要壓縮,那你就可以傳一個空的Stream進去,如果要解壓,就將包含壓縮數(shù)據(jù)的Stream傳進去。
而GZipStream的讀和寫分別對應的是解壓和壓縮兩個操作,知道了這些,使用起來就簡單了。
寫入的數(shù)據(jù)會被壓縮后寫入到傳入的Stream中,讀取的數(shù)據(jù)也是解壓后的數(shù)據(jù),可以直接寫入到一個新的流中。
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)){//將數(shù)據(jù)寫入基礎流,同時會被壓縮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()));}?
轉(zhuǎn)載于:https://www.cnblogs.com/webapi/p/4364841.html
總結(jié)
以上是生活随笔為你收集整理的asp.net实现GZip压缩和GZip解压的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mvc 自带分页控件PagedList.
- 下一篇: Ajax请求Session超时的解决办法