Définir le niveau de compression lors de la génération d'un fichier ZIP en utilisant RubyZip

StackOverflow https://stackoverflow.com/questions/2471407

  •  20-09-2019
  •  | 
  •  

Question

J'ai un programme Ruby qui se zippe une arborescence de répertoires de fichiers XML en utilisant rubyzip joyau . Mon problème est que le fichier commence à être lourd et je voudrais augmenter le niveau de compression, puisque le temps de compression ne sont pas un problème.

Je ne pouvais pas trouver dans la documentation rubyzip un moyen de spécifier le niveau de compression pour le fichier ZIP créé.

Quelqu'un sait comment modifier ce paramètre? Y at-il une autre bibliothèque Ruby qui permet de spécifier le niveau de compression?

Était-ce utile?

La solution

Voici le code que je crée en regardant rubyzip interne.

level = Zlib::BEST_COMPRESSION
Zip::ZipOutputStream.open(zip_file) do |zip|
    Dir.glob("**/*") do |filename|
        entry = Zip::ZipEntry.new("", filename)
        entry.gather_fileinfo_from_srcpath(filename)
        zip.put_next_entry(entry, nil, nil, Zip::ZipEntry::DEFLATED, level)
        entry.get_input_stream { |is| IOExtras.copy_stream(zip, is) }
    end
end

Autres conseils

vous aurez probablement une meilleure traction en appelant au programme « zip » ou à ne pas faire la Zipping.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top