Ruby 3.3 リファレンスマニュアル

singleton method Zlib::GzipReader.zcat

zcat(io, options = {}) -> StringRuby 3.0 から[permalink][rdoc][edit]
zcat(io, options = {}) {|string| ... } -> nil

io に含まれているすべての gzip ストリームを展開します。

io の末尾まで、複数の gzip ストリームが連続して格納されている場合も扱います。gzip ストリームの後ろに gzip 形式以外のデータがあってはいけません。

ブロックが与えられた場合は、展開したストリームごとにブロックを呼び出し、nil を返します。ブロックが与えられなかった場合は、すべてのストリームを展開した結果を連結した文字列を返します。

[PARAM] io:
読み込み元の IO オブジェクトを指定します。
[PARAM] options:
Zlib::GzipReader.new に渡すオプションをハッシュで指定します。
require 'zlib'

File.open('multi.gz', 'wb') { |f|
  f.write(Zlib.gzip('hoge'))
  f.write(Zlib.gzip('fuga'))
}

File.open('multi.gz') { |f|
  p Zlib::GzipReader.zcat(f) # => "hogefuga"
}

File.open('multi.gz') { |f|
  Zlib::GzipReader.zcat(f) { |chunk| p chunk }
}
# => "hoge"
# => "fuga"

[SEE_ALSO] Zlib::GzipReader.new