Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > zlibライブラリ > Zlib::GzipReaderクラス
クラスの継承リスト: Zlib::GzipReader < Enumerable < Zlib::GzipFile < Object < Kernel < BasicObject
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
[permalink][rdoc]io と関連付けられた GzipReader オブジェクトを作成します。
GzipReader オブジェクトは io からデータを逐次リードして 解析/展開を行います。io には少なくとも、IO#read と 同じ動作をする read メソッドが定義されている必要があります。
require 'zlib' 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::GzipReader
[permalink][rdoc]open(filename) {|gz| ... } -> object
filename で指定されるファイルを gzip ファイルとして オープンします。GzipReader オブジェクトを返します。 その他詳細は Zlib::GzipReader.new や Zlib::GzipReader.wrap と 同じです。
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::GzipReader
[permalink][rdoc]wrap(io) {|gz| ... } -> object
io と関連付けられた GzipReader オブジェクトを作成します。
ブロックが与えられた場合は、それを引数としてブロックを実行します。 ブロックの実行が終了すると、GzipReader オブジェクトは自動的に クローズされます。関連付けられている IO オブジェクトまで クローズしたくない時は、ブロック中で Zlib::GzipFile#finish メソッドを呼び出して下さい。
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 = $/) {|line| ... } -> self
[permalink][rdoc]each_line(rs = $/) {|line| ... } -> self
each(rs = $/) -> Enumerator
each_line(rs = $/) -> Enumerator
IO クラスの同名メソッドIO#each, IO#each_lineと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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 } }
[SEE_ALSO] IO#each, IO#each_line
each_byte {|byte| ... } -> nil
[permalink][rdoc]each_byte -> Enumerator
IO クラスの同名メソッドIO#each_byteと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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 ->
[SEE_ALSO] IO#each_byte
eof -> bool
[permalink][rdoc]eof? -> bool
圧縮データの終端に達した場合真を返します。 フッターが読み込まれていなくても真を返すことに注意して下さい。
require 'zlib' =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 -> Integer | nil
[permalink][rdoc]IO クラスの同名メソッドIO#getcと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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
[SEE_ALSO] IO#getc
gets(rs = $/) -> String | nil
[permalink][rdoc]IO クラスの同名メソッドIO#getsと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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
lineno -> Integer
[permalink][rdoc]IO クラスの同名メソッドIO#linenoと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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
[SEE_ALSO] IO#lineno
lineno=(num)
[permalink][rdoc]IO クラスの同名メソッドIO#lineno=と同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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
[SEE_ALSO] IO#lineno=
pos -> Integer
[permalink][rdoc]tell -> Integer
現在までに展開したデータの長さの合計を返します。 ファイルポインタの位置ではないことに注意して下さい。
require 'zlib' 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 = nil) -> String | nil
[permalink][rdoc]IO クラスの同名メソッドIO#readと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, 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
readchar -> Integer
[permalink][rdoc]IO クラスの同名メソッドIO#readcharと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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
readline(rs = $/) -> String
[permalink][rdoc]IO クラスの同名メソッドIO#readlineと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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
[SEE_ALSO] IO#readline
readlines(rs = $/) -> Array
[permalink][rdoc]IO クラスの同名メソッドIO#readlinesと同じです。
但し、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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"] }
[SEE_ALSO] IO#readlines
readpartial(maxlen, outbuf = nil) -> String
[permalink][rdoc]IO クラスの同名メソッド IO#readpartial と同じです。
[SEE_ALSO] IO#readpartial
rewind -> 0
[permalink][rdoc]ファイルポインタを Zlib::GzipReader.new を呼び出した直後の 時点に戻します。関連付けられている IO オブジェクトに seek メソッドが定義されている必要があります。
require 'zlib' =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
[permalink][rdoc]IO クラスの同名メソッド IO#ungetc と同じです。
IO クラスの同名メソッドと同じですが、gzip ファイル中に エラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。
gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが 記録されています。GzipReader オブジェクトは、次の時に展開した データとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。
require 'zlib' =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
[SEE_ALSO] IO#ungetc
unused -> String | nil
[permalink][rdoc]gzip フォーマットの解析のために読み込んだ余剰のデータを返します。 gzip ファイルが最後まで解析されていない場合は nil を返します。