模块 Zlib

此模块提供对 zlib 库的访问。Zlib 被设计成一个可移植、免费、通用的、在法律上不受限制的(即,不受任何专利保护)无损数据压缩库,可在几乎任何计算机硬件和操作系统上使用。

zlib 压缩库提供内存中的压缩和解压缩功能,包括对未压缩数据的完整性检查。

zlib 压缩数据格式在 RFC 1950 中描述,它是一个围绕 RFC 1951 中描述的 deflate 流的包装器。

该库还支持以 gzip (.gz) 格式读取和写入文件,其接口类似于 IO。 gzip 格式在 RFC 1952 中描述,它也是围绕 deflate 流的包装器。

zlib 格式被设计为紧凑且快速,以便在内存和通信通道中使用。 gzip 格式是为文件系统上的单个文件压缩而设计的,具有比 zlib 更大的头部以维护目录信息,并使用与 zlib 不同的、较慢的检查方法。

有关 zlib 的更多信息,请参阅系统的 zlib.h

使用示例

使用包装器以默认参数压缩字符串非常简单

require "zlib"

data_to_compress = File.read("don_quixote.txt")

puts "Input size: #{data_to_compress.size}"
#=> Input size: 2347740

data_compressed = Zlib::Deflate.deflate(data_to_compress)

puts "Compressed size: #{data_compressed.size}"
#=> Compressed size: 887238

uncompressed_data = Zlib::Inflate.inflate(data_compressed)

puts "Uncompressed data is: #{uncompressed_data}"
#=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote...

(如果您有 GZIP_SUPPORT)