filename.rb
require 'zip'
require 'fileutils'
require 'byebug'
dest = 'out/'
Zip::File.open('sample.zip') do |zip|#zipファイル開く
zip.each do |entry|#その中身をentryにひとつずつ渡してゆく
byebug
p entry.name#zipファイルの中に入っているファイルの名前(フォルダ名/ファイル名の形式)
dir = File.join(dest, File.dirname(entry.name))#File.dirname(entry.name)でディレクトリの名前を取得。destと結合
FileUtils.mkpath(dir)#dir=out/sampleというフォルダを作成
zip.extract(entry, dest + entry.name) { true }#entryをdest + entry.nameに格納する
end
end
ポイントは
qiita.rb
dir = File.join(dest, File.dirname(entry.name))#File.dirname(entry.name)でディレクトリの名前を取得。destと結合
FileUtils.mkpath(dir)#dir=out/sampleというフォルダを作成
ここで、先にフォルダを作成してしまうこと。
これがないと、「そのようなディレクトリは見つかりません」エラーがでてしまうことがある