class Zlib::ZStream

Zlib::ZStream 是处理压缩数据的流的抽象类。操作在子类中定义:Zlib::Deflate 用于压缩,Zlib::Inflate 用于解压缩。

Zlib::ZStream 的一个实例有一个流(源代码中的 struct zstream)和两个可变长度的缓冲区,它们与流的输入 (next_in) 和流的输出 (next_out) 相关联。在本文档中,“输入缓冲区”表示用于输入的缓冲区,“输出缓冲区”表示用于输出的缓冲区。

输入到 Zlib::ZStream 实例的Data 临时存储到输入缓冲区的末尾,然后从缓冲区的开头处理输入缓冲区中的数据,直到不再产生来自流的输出(即,直到处理后 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::InflateZlib::Deflate 感兴趣。

下面列出了更高层的方法。