2014/08/11

Windowsで解凍できるZIPファイルをRubyで作成する

Windowsで解凍できるZIPファイルを Ruby で作る必要があったのでメモ。
利用したのは rubyzip/rubyzip の v1.1.6
require 'zip'
class ZipForWin
def zip_files(directory)
Zip::File.open("#{directory}.zip", Zip::File::CREATE) do |zipfile|
# 再帰的にサブディレクトリも格納する
Dir[File.join(directory, '**', '**')].each do |entry|
# 相対パスで格納
entry_path = entry.sub(directory, '')
# windows で解凍できるように Shift_JIS へ変換
sjis_entry_path = entry_path.encode(Encoding::CP932, invalid: :replace, undef: :replace)
zipfile.add(sjis_entry_path, entry)
end
end
end
end
view raw zip_for_win.rb hosted with ❤ by GitHub
概ね、rubyzip/README.md at master · rubyzip/rubyzip の通りなんだけど、Windows で解凍できるようにするには Shift_JIS に変換したパスで格納してあげる必要がある。
実際に使用する際には、外部から Shift_JIS か UTF8 かを選べるようにするのがいいかもね。

0 件のコメント :

コメントを投稿