當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby ZStream類用法及代碼示例

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