• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

ちょっと私用でZIP圧縮をする機会があったので、メモ。

RubyでZIP圧縮するにはいろいろと方法があるようです。

  1. 拡張ライブラリのZlibを使う(GZip形式になる?)
    URL: http://www.ruby-lang.org/ja/man/html/Zlib.html
  2. Gemパッケージのrubyzipを使う
    URL: http://rubyforge.org/projects/rubyzip/
  3. Gemパッケージのziprubyを使う
    URL: http://rubyforge.org/projects/zipruby/

Rubyforgeをみた感じだとziprubyのほうが新しいようだったので、今回はziprubyを使うことにしました。

まず、ziprubyをインストールします。

   1  # gem install zipruby

実際にコードを書くとこのような感じになります。

   1  #/usr/bin/env ruby
   2   
   3  require 'rubygems'
   4  require 'zipruby'
   5  
   6  zipfile = 'test.zip'  # 圧縮されたファイル名
   7  passwd = 'password'   # パスワード
   8  
   9  # 圧縮するファイルたち
  10  # ファイル名を文字列で
  11  files = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
  12  
  13  # filesを圧縮して, test.zipを作成
  14  Zip::Archive.open(zipfile, Zip::CREATE) do |arc|
  15    files.each{|f| arc.add_file(f) }
  16  end
  17  
  18  # パスワードつきのZIPファイルにする
  19  Zip::Archive.encrypt(zipfile, passwd)

今回は圧縮と暗号化でしたが、解凍と復号もできるようです。

それにしても、rubyzipとか、ziprubyとか、Gemパッケージって名前の付け方が煩雑ですね・・・。

posted by Png y_tsuda on Thu 6 Nov 2008 at 15:10
Contents
RubyでZIP圧縮
Comments
Aleksey: The uname check is only due to a somewhat slopp... '11-2
Yu Tsuda: あぁ、そうですね、、syncすると戻ってしまいますね・・・。 ご指摘ありがとうございます!! '09-7
ursm: /usr/portage 以下のファイルは更新のたび元に戻ってしまうので、/etc/porta... '09-7
Yu Tsuda: 見た目だけでも、わざわざGentooをこういうリストに入れてるのがすごいなぁと思ったりしたので... '09-3
Leonard Chin (レオ): ただし、VirtualBoxで「Gentoo」などを選択しても、別にどのOSを入れても大丈夫だ... '09-3
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ