Zip/Ruby 0.1.0

http://zipruby.rubyforge.org/
https://rubyforge.org/projects/zipruby/

これはなに?

libzipRubyバインディングです。
Zipファイルの作成・解凍ができます。

インストール/ビルド


gem install zipruby

  • UNIXでのビルドにはlibzipが必要です
  • Windowsで使うにはzlib1.dllが必要です*1

ex

Zipファイルの作成
require 'zipruby'

Zip::Archive.open('test.zip', Zip::CREATE) do |ar|
  open('foo.txt') do |f|
    ar << f
  end

  ar.add_file('bar.txt')

  ar.add_buffer('zoo.txt', <<EOS)
じゅげむじゅげむ
ごこうのすりきり
ぱいぽぱいぽの
EOS
end
Zipファイルの解凍
require 'zipruby'

Zip::Archive.open('test.zip') do |ar|
  ar.each do |f|
    puts f.name
    puts f.read
  end

  ar.num_files.times do |i|
    p ar.get_name(i)
    f = ar.fopen(i)
    puts f.size
    puts f.comp_size
    f.close
  end
end
ディレクトリ付きのZipファイルを作る
#!/usr/bin/env ruby
require 'rubygems'
require 'zipruby'

Zip::Archive.open('test.zip', Zip::CREATE) do |ar|
  Dir.glob('*.rb').each do |i|
    ar.add_file("mydir/#{i}", i)
  end
end

ライセンス

BSDライセンスです。
Windows版ではパッチを適用したlibzipをスタティックリンクしています。
改変したソースはここから取得できます。

libzipはDieter Baron とThomas Klausner の著作物です。

TODO

  • パスワード付きZipファイルに対応する

*1:Rubyのパッケージに含まれていると思います