Ruby Tips!

RubyのTipsを紹介します

gzipで圧縮・展開を行う

gzipUNIXで使われる標準的な圧縮形式だ。
Rubyではzlibライブラリを使って、gzip形式の圧縮と展開が行える。

gzip形式のファイルを書き出すには、Zlib::GzipWriterを使う。
このクラスは出力をgzip圧縮しながら書き出すIOのラッパであり、IOと同様に扱うことができる。

require "zlib"

Zlib::GzipWriter.open("hoge.gz"){|gz|
  gz.puts "hoge"
  gz.puts "piyo"
  gz.puts "fuga"
}

gzip形式のファイルを読み出すには、Zlib::GzipReaderを使う。
このクラスも出力をgzip展開しながら読み出すIOのラッパであり、IOと同様に扱うことができる。

require "zlib"

Zlib::GzipReader.open("hoge.gz"){|gz|
  while s = gz.gets
    puts s
  end
}

なお、ファイルの書き出し読み出しではなくメモリ上で圧縮と展開を行いたい場合は、Zlib::DeflateZlib::Inflateを使用する。