【问题标题】:Zipping a directory recursively & skip container directory递归压缩目录并跳过容器目录
【发布时间】:2014-02-02 20:39:33
【问题描述】:

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

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,以便压缩文件只包含directory_to_zip 的内容而不是目录本身。

【问题讨论】:

    标签: ruby-on-rails ruby rubyzip


    【解决方案1】:

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

    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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2018-12-10
      • 2010-11-23
      • 2016-04-18
      • 1970-01-01
      相关资源
      最近更新 更多