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で展開すると文字化けすることがある
comments powered by Disqus
[2007-06-29-2] Linux 上で Windows 向けの zip ファイルを作る
[2007-03-06-2] 日本語のファイル名を含んだzipアーカイブが、unzipで展開すると文字化けすることがある