程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#完成GZip緊縮息爭緊縮入門實例

C#完成GZip緊縮息爭緊縮入門實例

編輯:C#入門知識

C#完成GZip緊縮息爭緊縮入門實例。本站提示廣大學習愛好者:(C#完成GZip緊縮息爭緊縮入門實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成GZip緊縮息爭緊縮入門實例正文


重要是由於GZipStream的結構函數中第一個須要傳入一個Stream,第二個是指定操作方法:緊縮照樣解緊縮。

其時的疑問點重要有:

1.我傳入的Stream是包括未緊縮數據的Stream嗎?
2.我解壓時是從一個緊縮流中讀取數據後再用GZipStream解壓嗎?

湧現以上兩點疑問,完整是我將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()));
            }

同時 在緊縮時傳入的流可所以非空流,你可以在寫入其他數據後再寫入緊縮數據,不會影響最初的成果。

假如你在解壓時碰到“幻數頭不准確”的提醒,是由於你要解壓的數據不是用GZip緊縮的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved