gpt4 book ai didi

ruby-on-rails - 递归压缩目录并跳过容器目录

转载 作者:数据小太阳 更新时间:2023-10-29 07:34:06 36 4
gpt4 key购买 nike

考虑一下,我们有以下目录结构:

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)

如何在 recursive_directory.zip 中跳过 directory_to_zip 的创建,以便 zip 文件只包含 directory_to_zip 的内容而不是目录本身。

最佳答案

好的,我自己解决了这个问题。如果你在同一条船上,这里是我是如何做到的:

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

这正是我想要的。这里的限制是它不处理空目录。希望它能对某人有所帮助。

关于ruby-on-rails - 递归压缩目录并跳过容器目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21515931/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com