このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

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

instance method Zlib::GzipReader#ungetbyte

ungetbyte(char) -> nilRuby 1.9.1 から[permalink][rdoc][edit]

IO クラスの同名メソッドIO#ungetbyteと同じです。

但し、gzip ファイル中にエラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。

gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが記録されています。GzipReader オブジェクトは、次の時に展開したデータとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。

[PARAM] char:
読み戻したい 1 バイトを、バイト値(整数)または 1 文字の文字列で指定します。
[EXCEPTION] Zlib::Error:
Zlib::Error を参照
[EXCEPTION] Zlib::GzipFile::Error:
Zlib::GzipFile::Errorを参照
[EXCEPTION] Zlib::GzipFile::NoFooter:
Zlib::GzipFile::NoFooterを参照
[EXCEPTION] Zlib::GzipFile::CRCError:
Zlib::GzipFile::CRCErrorを参照
[EXCEPTION] Zlib::GzipFile::LengthError:
Zlib::GzipFile::LengthErrorを参照
require 'zlib'

Zlib::GzipWriter.open('hoge.gz') { |gz| gz.print 'hoge' }

Zlib::GzipReader.open('hoge.gz') { |gz|
  b1 = gz.getbyte
  b2 = gz.getbyte
  printf "%d -> %d\n", b1, b2
  gz.ungetbyte(b2)
  p gz.getbyte
}
# => 104 -> 111
# => 111

[SEE_ALSO] IO#ungetbyte