Rubyでunzipする方法
サイトをいろいろあさって、よさそうなものを手直してメモさせていただきました。
require 'fileutils' require 'zip/zipfilesystem' def unzip(src, dest) Zip::ZipInputStream.open(src) do |rf| src = src.encode("UTF-8").gsub("\\", "/") while entry = rf.get_next_entry dir = File.dirname(entry.name) FileUtils.mkdir_p(File.join(dest,dir)) path = File.join(dest,entry.name) unless entry.name_is_directory? puts path File.open(path, "wb") do |wf| wf << rf.read end end end end end unzip "zip/file/path/", "/path/unzip/"
次は、ziprubyライブラリを使ったものです。
require 'fileutils' require 'zipruby' def unzip(src,dest) Zip::Archive.open(src) do |entries| entries.each do |entry| name = entry.name.encode("UTF-8").gsub("\\", "/") if entry.directory? FileUtils.mkdir_p(File.join(dest,name)) else dirname = File.join(dest,File.dirname(name)) FileUtils.mkdir_p(dirname) puts File.join(dest,name) open(File.join(dest,name), "wb") do|f| f << entry.read end end end end end unzip "zip/file/path/", "/path/unzip/"