考虑一下,我们有以下目录结构:
Location:
/Users/me/Desktop/directory_to_zip/
dir1 dir2 somefile.txt
现在,如果我使用rubyzip使用以下代码压缩directory_to_zip
的内容:
directory = '/Users/me/Desktop/directory_to_zip/'
zipfile_name = '/Users/me/Desktop/recursive_directory.zip'
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
Dir[File.join(directory, '**', '**')].each do |file|
zipfile.add(file.sub(directory, ''), file)
end
end
这将创建一个名为recursive_directory.zip
的zip文件,其中包含一个名为directory_to_zip
&的容器目录。在directory_to_zip
内,我会找到我的文件(dir1 dir2 somefile.txt
)
请问我是否在directory_to_zip
内跳过recursive_directory.zip
的创建,以便zip文件只包含directory_to_zip
&的内容。不是目录本身。
答案 0 :(得分:3)
好的,我自己解决了这个问题。如果你在同一条船上,我在这里就是这样做的
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
Dir.chdir directory
Dir.glob("**/*").reject {|fn| File.directory?(fn) }.each do |file|
puts "Adding #{file}"
zipfile.add(file.sub(directory + '/', ''), file)
end
end
这完全符合我的要求。这里的限制是它不处理空目录。希望它会帮助某人