2004-05-10 Mon

[別の年の同じ日: 2003 2006 2007 2008 2009 2010

Winny 開発者逮捕へ 京都府警が全国初 はてぶ

http://headlines.yahoo.co.jp/hl?a=20040510-00000020-kyodo-soci

rubyzip はてぶ

http://rubyzip.sourceforge.net/

ruby で zip を扱うためのライブラリ。

インストール
install.rb が付属しているが、オプションでインストール先が指定できない。
sitelibdir に zip というディレクトリを作り、そこにファイルを
コピーしているだけなので、install.rb を使わずに spec file を書く。


使い方

展開
Windows 上で作られた SJIS のファイル名のファイルは Linux 上では
文字化けするので、euc-jp でファイルを展開するには
次のようにすればよい。

  zip = Zip::ZipFile.new(INPUT.zip)
  name = NKF::nkf('-eZ', entry.name).gsub(/\s+/, "_")
    File.open(File.join(dist, name), "w") {|f| f.puts zip.read(entry.name)}
  end


圧縮
Linux 上で zip file を作ると Windows 上で化けるので、
SJIS のファイル名として圧縮するには次のようにすればよい。

  Zip::ZipFile.open("OUTPUT.zip", Zip::ZipFile::CREATE) {|zf|
    files.each do |i|
      zf.add(NKF::nkf("-s",i), i)
    end
  }


files は 圧縮するファイル (path) の配列。


その他

zip.rb の 11 行目は警告がでるのでコメントアウト。

  09 if Tempfile.superclass == SimpleDelegator
  10   require 'zip/tempfile_bugfixed'
  11   Tempfile = BugFix::Tempfile
  12 end


Referrer (Inside):
[2007-06-29-2] Linux 上で Windows 向けの zip ファイルを作る
[2007-03-06-2] 日本語のファイル名を含んだzipアーカイブが、unzipで展開すると文字化けすることがある