Establecer el nivel de compresión cuando se genera un archivo ZIP usando RubyZip
-
20-09-2019 - |
Pregunta
Tengo un programa de Ruby que las cremalleras un árbol de directorios de archivos XML utilizando el rubyzip joya. Mi problema es que el archivo está empezando a ser pesado y me gustaría aumentar el nivel de compresión, ya que el tiempo de compresión no es un problema.
No pude encontrar en el href="http://rubyzip.sourceforge.net/" rel="noreferrer"> rubyzip documentación una forma de especificar el nivel de compresión para el archivo ZIP creado.
Alguien sabe cómo cambiar esta configuración? ¿Hay alguna otra biblioteca de Ruby que permite especificar el nivel de compresión?
Solución
Aquí está el código que he creado examinado rubyzip interno.
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
Otros consejos
probablemente obtendrá una mejor tracción llamando a cabo con el programa 'zip' o qué no hacer el pasar con velocidad.