当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。