zipのファイルとディレクトリの名前を変更しようとしています。私は3つの異なったものを試してみました。それを行う正しいコマンドは何ですか?あなたは、ファイルがzipファイルに存在して見ることができるように、rubyzipを使用してzipファイルのファイルとディレクトリの名前を変更する方法
require 'zip/zip'
...
def renaming_zip(zip_file)
Zip::ZipFile.open(zip_file).each do |entry|
if entry.name == "mimetype"
puts "#{entry.name} is a file ? #{File.file? entry.name}"
puts " class ? #{entry.class}"
new_filename = "#{entry.name.gsub("mimetype", "#mimetype-new")}"
#found_entry = entry.get_entry("mimetype")
#found_entry.name = new_filename #1st try
puts " new filename #{new_filename}"
#File.rename(entry.name, new_filename) #2nd try
#entry.rename(entry.name, new_filename) #3rd try
end
end
end
私は任意の名前変更トライアルコマンドなしで実行した場合は、私はこの出力を得る:
以下は私のコードの抜粋です。これはFileクラスではなく、Zip :: ZipEntryクラスであり、新しい名前を解析できます。第一の試行(アンコメント)と
mimetype is a file ? false
class ? Zip::ZipEntry
new filename #mimetype-new
、私はこのエラーを取得:
mimetype is a file ? false
class ? Zip::ZipEntry
Uncaught exception: undefined method `get_entry' for mimetype:Zip::ZipEntry
/Users/.../app/lib/zip_rename.rb:45:in `block in renaming_zip'
...
第二の試行(アンコメント)に、私はこのエラーを取得する:
Uncaught exception: No such file or directory - (mimetype, #mimetype-new)
/Users/.../app/lib/zip_rename.rb:48:in `rename'
/Users/.../app/lib/zxp_rename.rb:48:in `block in renaming_zip'
...
mimetype is a file ? false
class ? Zip::ZipEntry
new filename #mimetype-new
第三試してみると(アンコメント)、私はこのエラーが表示されます:
mimetype is a file ? false
class ? Zip::ZipEntry
new filename #mimetype-new
Uncaught exception: undefined method `rename' for mimetype:Zip::ZipEntry
/Users/.../app/lib/zip_rename.rb:49:in `block in renaming_zip'
...