Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > zlibライブラリ > Zlib::GzipReaderクラス
class Zlib::GzipReader
クラスの継承リスト: Zlib::GzipReader < Enumerable < Zlib::GzipFile < Object < Kernel < BasicObject
Abstract
gzip 形式の圧縮ファイルを読み込むラッパークラスです。 IO クラスのインスタンス (又は IO クラスのインスタンスと同じメソッドを 持つオブジェクト) と関連付けて使用します。
require 'zlib'
=begin
# hoge.gz がない場合は下記で作成できる。
Zlib::GzipWriter.open('hoge.gz') { |gz|
gz.puts 'hoge'
}
=end
Zlib::GzipReader.open('hoge.gz') {|gz|
print gz.read
}
f = File.open('hoge.gz')
gz = Zlib::GzipReader.new(f)
print gz.read
gz.close
特異メソッド
new(io) -> Zlib::GzipReader-
io と関連付けられた GzipReader オブジェクトを作成します。 GzipReader オブジェクトは io からデータを逐次リードして 解析/展開を行います。io には少なくとも、IO#read と 同じ動作をする read メソッドが定義されている必要があります。
ヘッダーの解析に失敗した場合 Zlib::GzipFile::Error 例外が 発生します。
- [PARAM] io:
- IO オブジェクト、もしくは少なくともIO#readと同じ動作をするreadメソッドが定義されているオブジェクト
- [EXCEPTION] Zlib::GzipFile::Error:
- ヘッダーの解析に失敗した場合発生します。
File.open('hoge.txt', "w") { |fp| fp.puts 'hoge' } f = File.open('hoge.txt') begin Zlib::GzipReader.new(f) rescue Zlib::GzipFile::Error => err puts "error", err #=> error #=> not in gzip format end open(filename) -> Zlib::GzipReaderopen(filename) {|gz| ... } -> object-
filename で指定されるファイルを gzip ファイルとして オープンします。GzipReader オブジェクトを返します。 その他詳細は Zlib::GzipReader.new や Zlib::GzipReader.wrap と 同じです。
- [PARAM] filename:
- gzip ファイル名を文字列で指定します。
require 'zlib' =begin # hoge.gz がない場合はこれで作成する。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' } =end Zlib::GzipReader.open('hoge.gz'){|gz| print gz.read } wrap(io) -> Zlib::GzipReaderwrap(io) {|gz| ... } -> object-
io と関連付けられた GzipReader オブジェクトを作成します。 ブロックが与えられた場合は、それを引数としてブロックを実行します。 ブロックの実行が終了すると、GzipReader オブジェクトは自動的に クローズされます。関連付けられている IO オブジェクトまで クローズしたくない時は、ブロック中で Zlib::GzipFile#finish メソッドを呼び出して下さい。
- [PARAM] io:
- IO オブジェクトを指定します。
require 'zlib' =begin # hoge.gz がない場合はこれで作成する。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' } =end f = File.open('hoge.gz') Zlib::GzipReader.wrap(f){|gz| print gz.read } p f.closed? #=> true f = File.open('hoge.gz') Zlib::GzipReader.wrap(f){|gz| print gz.read gz.finish } p f.closed? #=> false
インスタンスメソッド
each([rs]) -> selfeach_line([rs]) -> self-
IO クラスの同名メソッドIO#each, IO#each_lineと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。
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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' gz.puts 'fuga' } =end Zlib::GzipReader.open('hoge.gz') { |gz| gz.each { |line| puts line } }- [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を参照
[SEE_ALSO] IO#each
[SEE_ALSO] IO#each_line
each_byte -> nil-
IO クラスの同名メソッドIO#each_byteと同じです。
但し、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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' } =end Zlib::GzipReader.open('hoge.gz') { |gz| gz.each_byte { |b| printf "%d -> %c\n", b, b } } #=> 104 -> h #=> 111 -> o #=> 103 -> g #=> 101 -> e #=> 10 ->- [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を参照
[SEE_ALSO] IO#each_byte
eof -> booleof? -> bool-
圧縮データの終端に達した場合真を返します。 フッターが読み込まれていなくても真を返すことに注意して下さい。
=begin # hoge.gz がない場合はこれで作成する。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' gz.puts 'fuga' gz.puts 'foga' } =end Zlib::GzipReader.open('hoge.gz'){|gz| gz.each_line{|line| puts line } p gz.eof? #=> true } getc -> Fixnum | nil-
IO クラスの同名メソッドIO#getcと同じです。
但し、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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' } =end Zlib::GzipReader.open('hoge.gz') { |gz| while c = gz.getc puts c end } #=> 104 #=> 111 #=> 103 #=> 101 #=> 10- [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を参照
[SEE_ALSO] IO#getc
gets([rs]) -> String | nil-
IO クラスの同名メソッドIO#getsと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。
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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' gz.puts 'fuga' } =end Zlib::GzipReader.open('hoge.gz') { |gz| while l = gz.gets puts l end } #=> hoge #=> fuga- [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を参照
lineno -> Fixnum | Bignum-
IO クラスの同名メソッドIO#linenoと同じです。
但し、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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'h' gz.puts 'o' gz.puts 'g' gz.puts 'e' } =end Zlib::GzipReader.open('hoge.gz') { |gz| while l = gz.gets l.chomp! printf "%s %d\n", l, gz.lineno end } #=> h 1 #=> o 2 #=> g 3 #=> e 4- [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を参照
[SEE_ALSO] IO#lineno
lineno=(num) -> Integer-
IO クラスの同名メソッドIO#lineno=と同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
- [PARAM] num:
- 新たな行番号を整数で指定します。
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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'h' gz.puts 'o' gz.puts 'g' gz.puts 'e' } =end Zlib::GzipReader.open('hoge.gz') { |gz| while l = gz.gets l.chomp! gz.lineno = 1000 if l == "o" printf "%s %d\n", l, gz.lineno end } #=> h 1 #=> o 1001 #=> g 1002 #=> e 1003- [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を参照
[SEE_ALSO] IO#lineno=
pos -> Fixnumtell -> Fixnum-
現在までに展開したデータの長さの合計を返します。 ファイルポインタの位置ではないことに注意して下さい。
Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' } Zlib::GzipReader.open('hoge.gz'){|gz| while c = gz.getc printf "%c, %d\n", c, gz.pos end } # 実行例 #=> h, 1 #=> o, 2 #=> g, 3 #=> e, 4 #=> #=> , 5 read([length]) -> String | nil-
IO クラスの同名メソッドIO#readと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
- [PARAM] length:
- 読み込む文字列の文字数を整数で指定します。
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 メソッドが 呼び出された時。
=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 }- [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を参照
[SEE_ALSO] IO#read
readchar -> Fixnum-
IO クラスの同名メソッドIO#readcharと同じです。
但し、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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' } =end Zlib::GzipReader.open('hoge.gz') { |gz| begin puts gz.readchar rescue EOFError => err puts err break end while true } #=> 104 #=> 111 #=> 103 #=> 101 #=> 10 #=> end of file reached- [EXCEPTION] EOFError:
- EOF に到達したとき発生します。
- [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を参照
readline([rs]) -> String-
IO クラスの同名メソッドIO#readlineと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。
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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' gz.puts 'fuga' } =end Zlib::GzipReader.open('hoge.gz') { |gz| begin puts gz.readline rescue EOFError => err puts err break end while true } #=> hoge #=> fuga #=> end of file reached- [EXCEPTION] EOFError:
- EOF に到達したとき発生します。
- [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を参照
[SEE_ALSO] IO#readline
readlines([rs]) -> Array-
IO クラスの同名メソッドIO#readlinesと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。
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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合は下記で作成できる。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' gz.puts 'fuga' } =end Zlib::GzipReader.open('hoge.gz') { |gz| p gz.readlines #=> ["hoge\n", "fuga\n"] }- [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を参照
[SEE_ALSO] IO#readlines
readpartial(maxlen[, outbuf]) -> String-
IO クラスの同名メソッドIO#readpartialと同じです。
- [PARAM] maxlen:
- IO#readpartialを参照してください。
- [PARAM] outbuf:
- IO#readpartialを参照してください。
- [EXCEPTION] ArgumentError:
- maxlen に負の値が入力された場合発生します。
[SEE_ALSO] IO#readpartial
rewind -> 0-
ファイルポインタを Zlib::GzipReader.new を呼び出した直後の 時点に戻します。関連付けられている IO オブジェクトに seek メソッドが定義されている必要があります。
=begin # hoge.gz がない場合はこれで作成する。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.puts 'hoge' gz.puts 'fuga' } =end gz = Zlib::GzipReader.open('hoge.gz') puts gz.gets #=> hoge puts gz.gets #=> fuga gz.rewind #=> 0 puts gz.gets #=> hoge gz.close ungetc(char) -> nil-
IO クラスの同名メソッドIO#ungetcと同じです。
IO クラスの同名メソッドと同じですが、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
- [PARAM] char:
- 読み戻したい1文字かそのコードポイントを指定します。
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 メソッドが 呼び出された時。
=begin # hoge.gz がない場合はこれで作成する。 Zlib::GzipWriter.open('hoge.gz') { |gz| gz.print 'hogefuga' } =end Zlib::GzipReader.open('hoge.gz') { |gz| begin c1 = gz.getc c2 = gz.getc break if c2.nil? printf "%c -> %c\n", c1, c2 gz.ungetc(c2) end while true } #=> h -> o #=> o -> g #=> g -> e #=> e -> f #=> f -> u #=> u -> g #=> g -> a- [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を参照
[SEE_ALSO] IO#ungetc
unused -> String | nil-
gzip フォーマットの解析のために読み込んだ余剰のデータを返します。 gzip ファイルが最後まで解析されていない場合は nil を返します。