http://zipruby.rubyforge.org/
https://rubyforge.org/projects/zipruby/
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
TODO
- パスワード付きZipファイルに対応する