a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C#實現(xiàn)GZip壓縮和解壓縮入門實例

2020-01-24 02:42:35
字體:
供稿:網(wǎng)友

主要是因為GZipStream的構(gòu)造函數(shù)中第一個需要傳入一個Stream,第二個是指定操作方式:壓縮還是解壓縮。

當時的疑問點主要有:

1.我傳入的Stream是包含未壓縮數(shù)據(jù)的Stream嗎?
2.我解壓時是從一個壓縮流中讀取數(shù)據(jù)后再用GZipStream解壓嗎?

出現(xiàn)以上兩點疑問,完全是我將GZipStream的用法理解反了。

其實GZipStream里面存的是已經(jīng)壓縮過的數(shù)據(jù)流,傳入的Stream是作為基礎(chǔ)Stream傳入,如果要壓縮,那你就可以傳一個空的Stream進去,如果要解壓,就將包含壓縮數(shù)據(jù)的Stream傳進去。

而GZipStream的讀和寫分別對應(yīng)的是解壓和壓縮兩個操作,知道了這些,使用起來就簡單了。

寫入的數(shù)據(jù)會被壓縮后寫入到傳入的Stream中,讀取的數(shù)據(jù)也是解壓后的數(shù)據(jù),可以直接寫入到一個新的流中。

復(fù)制代碼 代碼如下:

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ù)寫入基礎(chǔ)流,同時會被壓縮
                    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()));
            }

同時 在壓縮時傳入的流可以是非空流,你可以在寫入其他數(shù)據(jù)后再寫入壓縮數(shù)據(jù),不會影響最后的結(jié)果。

如果你在解壓時遇到“幻數(shù)頭不正確”的提示,是因為你要解壓的數(shù)據(jù)不是用GZip壓縮的。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久成人国产精品 | 久久久久国产一区二区三区四区 | 激情五月婷婷在线 | 中文字幕免费看 | 三区视频 | 国产精品美女在线观看 | 每日更新av | 日本成人中文字幕在线观看 | 欧美aⅴ一区二区 | 成人精品在线 | 中文字幕一区二区三区四区五区 | 精品久久中文字幕 | 黄色片在线免费播放 | 成人在线www | 一二三区精品 | 国产美女在线观看精品 | 国产无区一区二区三麻豆 | 欧美成人在线免费观看 | 精品三级在线观看 | 在线第一页 | 国产片网站 | www国产亚洲 | 91大神免费在线观看 | 欧美日韩在线免费观看 | 久久久www成人免费精品 | 日韩精品久久久久 | 成人h精品动漫一区二区三区 | 亚洲精选免费视频 | 日韩中文字幕免费在线播放 | 色婷综合 | 亚洲欧美综合精品久久成人 | 欧美在线操| 亚洲 中文 欧美 日韩 在线观看 | 超碰97免费在线 | 欧美精品网站 | 国产一区国产二区在线观看 | 91人人插| 成人黄大片视频在线观看 | 99久久综合狠狠综合久久 | 亚洲一级黄色 | 国产区在线观看 |