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