Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > zlibライブラリ > Zlib::GzipWriterクラス > wrap

singleton method Zlib::GzipWriter.wrap

wrap(io, level = Zlib::DEFAULT_COMPRESSION, strategy = Zlib::DEFAULT_STRATEGY) -> Zlib::GzipWriter[permalink][rdoc]
wrap(io, level = Zlib::DEFAULT_COMPRESSION, strategy = Zlib::DEFAULT_STRATEGY) {|gz| ... } -> object

io と関連付けられた GzipWriter オブジェクトを作成します。ブロックが与えられた場合、それを引数としてブロックを実行します。ブロックの実行が終了すると、GzipWriter オブジェクトは自動的にクローズされます。関連付けられている IO オブジェクトまでクローズしたくない時は、ブロック中で Zlib::GzipFile#finish メソッドを呼び出して下さい。

[PARAM] io:
IOオブジェクト、もしくは少なくとも、 IO#write と 同じ動作をする write メソッドが定義されている必要があります。
[PARAM] level:
0-9の範囲の整数を指定します。詳細はzlib.hを参照してください。
[PARAM] strategy:
Zlib::FILTERED, Zlib::HUFFMAN_ONLY, Zlib::DEFAULT_STRATEGYなど指定します。詳細はzlib.h を参照してください。
require 'zlib'

def case1
  filename='hoge1.txt'
  f = File.open(filename, "w")
  Zlib::GzipWriter.wrap(f, Zlib::NO_COMPRESSION){|gz|
    gz.puts "hogehoge" * 100
  }
  p f.closed? #=> true
  p FileTest.size(filename) #=> 824
end

def case2
  filename='hoge1.gz'
  f = File.open(filename, "w")
  Zlib::GzipWriter.wrap(f, Zlib::BEST_COMPRESSION){|gz|
    gz.puts "hogehoge" * 100
    gz.finish
  }
  p f.closed? #=> false
  f.close
  p FileTest.size(filename) #=> 32
end

case1
case2