read(length = nil) -> String | nil
[permalink][rdoc][edit]-
IO クラスの同名メソッドIO#readと同じです。
但し、gzip ファイル中にエラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが記録されています。GzipReader オブジェクトは、次の時に展開したデータとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
- EOF (圧縮データの最後) を越えて読み込み要求を受けた時。 すなわち Zlib::GzipReader#read, Zlib::GzipReader#gets メソッド等が nil を返す時。
- EOF まで読み込んだ後、Zlib::GzipFile#close メソッドが 呼び出された時。
- EOF まで読み込んだ後、Zlib::GzipReader#unused メソッドが 呼び出された時。
- [PARAM] length:
- 読み込む文字列の文字数を整数で指定します。省略した場合は、全てのデータを読み込みます。
- [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' =begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge_fuga' } =end Zlib::GzipReader.open('hoge.gz') { |gz| p gz.read(4) #=> "hoge" p gz.read #=> "_fuga\n" p gz.read(1) #=> nil }
[SEE_ALSO] IO#read