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| ... } -> objectfilename で指定されるファイルを 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| ... } -> objectio と関連付けられた 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| ... } -> selfeach(rs = $/) -> Enumeratoreach_line(rs = $/) -> EnumeratorIO クラスの同名メソッド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 -> EnumeratorIO クラスの同名メソッド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 を返します。