railsrubyzip在一个新的zip文件中复制多个zip文件



所以基本上我创建了一堆zip文件,其中包含一个pwe和pws文件。

以下代码生成一组zip文件,命名为orgname_org_member_orguser1.zip它包含2个文件(一个pws和pwe)

 @successful_orgs.each do |org|
    file = "#{RAILS_ROOT}/my-data/#{org[:location]}_#{org[:member]}_#{org[:username]}.zip"
    generate_file(ups_file, org)
 end
  def generate_file(file, org)
    zipfile = Zip::ZipFile.open(file, Zip::ZipFile::CREATE)
    pwe_text, pws_text = MyGenerator.password
    pwe_file =  "#{RAILS_ROOT}/tmp/#{org[:location]}_#{org[:member]}.pwe"
    pws_file =  "#{RAILS_ROOT}/tmp/#{org[:location]}_#{org[:member]}.pws"
    File.open(pwe_file, 'w') { |file| file.write(pwe_text) }
    File.open(pws_file, 'w') { |file| file.write(pws_text) }
    zipfile.add("#{org[:location]}_#{org[:member]}.pwe", pwe_file)
    zipfile.add("#{org[:location]}_#{org[:member]}.pws", pws_file)
    zipfile.close
    File.delete(pwe_file)
    File.delete(pws_file)    
  end

我想让代码做正在做的事情(创建zip文件并将其存储在指定的路径)

但除了以上内容,我还想创建另一个名为all.zip的zip文件,该文件将包含上面创建的所有zip文件。

意思是,all.zip=>file1.zip、file2.zip等

我不知道如何在上面的代码中融入这种逻辑。如有任何帮助,我们将不胜感激。

编辑:我不想搜索并添加目录中的所有文件。我只想添加在上面的代码中创建的zip文件。

您可以收集数组中的所有zip文件路径,然后迭代地将它们添加到新的zip文件中:

zip_files = []
@successful_orgs.each do |org|
  file = "#{RAILS_ROOT}/my-data/#{org[:location]}_#{org[:member]}_#{org[:username]}.zip"
  zip_files << file
  generate_file(file, org)
end
all_zipped = Zip::ZipFile.open("#{RAILS_ROOT}/tmp/all.zip", Zip::ZipFile::CREATE)
zip_files.each do |f|
  all_zipped.add(zip_file)
end

请注意,这样做不会获得任何额外的压缩。

相关内容

  • 没有找到相关文章

最新更新