C 實現GZip壓縮和解壓縮入門例項

2022-09-26 08:42:10 字數 878 閱讀 9333

主要是因為gzipstream的建構函式中第乙個需要傳入乙個stream,第二個是指定操作方式:壓縮還是解壓縮。

當時的疑問點主要有:

1.我傳入的stream是包含未壓縮資料的stream嗎?

2.我解壓時是從乙個壓縮流中讀取資料後再用gzipstream解壓嗎?

出現以上兩點疑問,完全是我將gzipstream的用法理解反了。

其實gzipstream裡面存的是已經壓縮過的資料流,傳入的stream是作為基礎stream傳入,如果要壓縮,那你就可以傳乙個空的stream進去,如果要解壓,就將包含壓縮資料的stream傳進去。

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

寫入的資料會被壓縮後寫入到傳入的stream中,讀取的資料也是解壓後的資料,可以直接寫入到乙個新的流中。

複製** **如下:

byte cbytes = null;

//壓縮

using (memorystream cms = new memorystream())

cbytes = cms.toarray();

}//解壓

using (memorystream dms = new memorystream())}}

console.writeline(encoding.utf8.getstring(dms.toarray()));

}同時 在壓縮時傳入的流可以是非空流,你可以在寫入其他資料後再寫入壓縮資料,不會影響最後的結果。

如果你在解壓時遇到「幻數頭不正確」的提示,是因為你要解壓的資料不是用gzip壓縮的。

本文標題: c#實現gzip壓縮和解壓縮入門例項

本文位址: /ruanjian/csharp/107416.html

symbian壓縮和解壓縮GZIP檔案

開發夥伴平台 s60 3rd edition,fp1 詳細描述 下列 片段演示了如何壓縮和解壓縮gzip檔案,這裡使用了cezfiletogzip類和cezgziptofi類。可以通過自簽名執行。mmp檔案 需要下列鏈結庫 code library efsrv.lib library ezlib.l...

C 壓縮和解壓縮

話不多說,直接上 最後有重要說明!哦對了,用的是icsharpcode.sharpziplib.zip 這個東西 壓縮 先宣告個全域性變數吧 附件打包的變數 zipoutputstream zos null 下面就是壓縮的 了 protected void btnfile click object ...

Nginx的Gzip介紹之壓縮和解壓縮

本節介紹如何配置響應的壓縮或解壓縮以及如何傳送壓縮檔案。壓縮響應通常會大大減少傳輸資料的大小。但是,由於壓縮是在執行時發生的,因此還會增加大量的處理開銷,這可能會對效能產生負面影響。nginx在將響應傳送給客戶端之前執行壓縮,但不會 雙重壓縮 已壓縮的響應 例如,由 伺服器進行的響應 要啟用壓縮,請...