Rubyでunzip(+文字コード変換)
zipファイルを扱うときにちょっとめんどうなのがファイル名の文字コード。パッチがあったりもするようなのだけど、忘れてアップグレードかけてしまったりしてて。
unzipするRubyスクリプトがあるよというkmutoさんさんのtweetを見て、自作すればいいんだなと。
それで久しぶりにRubyのコードを書いてみた。(なぜだか最近は仕事でばっか書いてます。)
$ ruby1.9.1 -r zipruby -e ' Zip::Archive.open("unzip-rb-test.zip", Zip::CREATE) {|a| a.add_buffer("テスト", "a"*123) a.add_buffer("ふー/ばー".encode("Shift_JIS"), "b"*321) }' $ unzip.rb -lv unzip-rb-test.zip f 2011-06-09 19:46 テスト 123 f 2011-06-09 19:46 ふー/ばー 321 $ unzip.rb unzip-rb-test.zip extracted files in unzip-rb-test $ ls -R unzip-rb-test unzip-rb-test: ふー テスト unzip-rb-test/ふー: ばー
書いたはいいが適当なzipファイルがなく、ごく普通のzipファイルでは動いてるっぽいけども、変なファイルを作るのもめんどうだなーとまだあまりテストしていない。いきなりファイルが消えたりってことはないと思うけど、試してみようという人は気を付けて。