本文簡要介紹ruby語言中 Zlib::ZStream類 的用法。
Zlib::ZStream 是處理壓縮數據的流的抽象類。這些操作在子類中定義: Zlib::Deflate 用於壓縮, Zlib::Inflate 用於解壓縮。
Zlib::ZStream 的一個實例有一個流(源中的struct zstream)和兩個可變長度緩衝區,它們與流的輸入(next_in)和流的輸出(next_out)相關聯。在本文檔中,“input buffer” 表示輸入緩衝區,“output buffer” 表示輸出緩衝區。
輸入到 Zlib::ZStream 實例的數據會暫時存儲到輸入緩衝區的末尾,然後從緩衝區的開頭處理輸入緩衝區中的數據,直到不再從流中產生輸出(即直到 avail_out > 0處理後)。在處理過程中,輸出緩衝區被自動分配和擴展以保存所有輸出數據。
一些特定的實例方法使用輸出緩衝區中的數據並將它們作為 String 返回。
這是用於說明上述內容的 ascii 藝術:
+================ an instance of Zlib::ZStream ================+
|| ||
|| +--------+ +-------+ +--------+ ||
|| +--| output |<---------|zstream|<---------| input |<--+ ||
|| | | buffer | next_out+-------+next_in | buffer | | ||
|| | +--------+ +--------+ | ||
|| | | ||
+===|======================================================|===+
| |
v |
"output data" "input data"
如果在處理輸入緩衝區期間發生錯誤,則會引發 Zlib::Error 的子類異常。此時,輸入和輸出緩衝區都保持錯誤發生時的狀態。
Method 目錄
此類中的許多方法都相當低級,用戶不太可能感興趣。事實上,用戶不太可能直接使用這個類;相反,他們會對 Zlib::Inflate 和 Zlib::Deflate 感興趣。
下麵列出了更高級別的方法。
相關用法
- Ruby Zlib.gunzip用法及代碼示例
- Ruby ZeroDivisionError類用法及代碼示例
- Ruby Zlib.deflate用法及代碼示例
- Ruby Zlib.adler32用法及代碼示例
- Ruby Zlib.inflate用法及代碼示例
- Ruby Zlib模塊用法及代碼示例
- Ruby Zlib.gzip用法及代碼示例
- Ruby Time tv_sec用法及代碼示例
- Ruby MatchData.pre_match用法及代碼示例
- Ruby Symbol capitalize用法及代碼示例
- Ruby Matrix lup()用法及代碼示例
- Ruby SizedQueue clear()用法及代碼示例
- Ruby Object.instance_variable_get用法及代碼示例
- Ruby Spotter.spot_op_asgn2_for_name用法及代碼示例
- Ruby Float arg()用法及代碼示例
- Ruby WIN32OLE_METHOD#visible?用法及代碼示例
- Ruby Matrix unitary?()用法及代碼示例
- Ruby Integer.nobits?用法及代碼示例
- Ruby Kernel.local_variables用法及代碼示例
- Ruby StringScanner skip_until用法及代碼示例
- Ruby StringScanner search_full用法及代碼示例
- Ruby Matrix symmetric?()用法及代碼示例
- Ruby CStructEntity.[]=用法及代碼示例
- Ruby BigMath.cos用法及代碼示例
- Ruby Vertex.==用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 ZStream類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
