gzipファイルを扱う

Zlib::GzipWriterを使うと、Rubygzipファイルが作れます。
詳細は、ri Zlib::GzipWriterを参照してください。

require 'pathname'
require 'zlib'

Zlib::GzipWriter.open('rubyco.gz') do |f|
  1000000.times do
    f.write "Hello!"
  end
end

p Pathname.new("rubyco.gz").size    #=> 8779
# system("gunzip rubyco.gz")
# p Pathname.new("rubyco").size     #=> 6000000

同様に、Zlib::GzipReaderを使うと、gzipファイルを読むことができます。

require 'pathname'
require 'zlib'

Zlib::GzipWriter.open('rubyco.gz') do |f|
  100.times do
    f.write "Hello!"
  end
end

p Pathname.new("rubyco.gz").size    #=> 32

Zlib::GzipReader.open('rubyco.gz') do |f|
  print f.read
end
#=> Hello!Hello!Hello!...