本文簡要介紹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類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。