teppeilog

ちょっとずつエンジンかかってきた

ziprubyでディレクトリごと圧縮

leave a comment

RubyでZipを作成する方法はざっと調べた限りziprubyとrubyzipあたりが使われているっぽい。とりあえずziprubyをチョイスして、ディレクトリを含めた圧縮を実装。

  def make_zip(target, zippath)
    Zip::Archive.open(zippath, Zip::CREATE) do |ar|      
      if File.directory?(target)
        target = (target + "/").sub("//", "/")
        Dir::chdir(target) do
          Dir.glob("**/*") do |file|
            if File.directory?(file)
              ar.add_dir(target+file)
            else
              ar.add_file(target+file, file)
            end
          end
        end      
      else
        ar.add_file(target)
      end
      
    end
  end

なんか冗長なような気もする。。。

このエントリーをはてなブックマークに追加
はてなブックマーク - ziprubyでディレクトリごと圧縮
Share on Facebook

Written by teppei

1月 20th, 2011 at 3:50 am

Posted in プログラミング

Tagged with ,