Impostare il livello di compressione durante la generazione di un file ZIP utilizzando RubyZip

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

  •  20-09-2019
  •  | 
  •  

Domanda

Ho un programma di Ruby che comprime un albero di directory di file XML utilizzando il rubyzip gioiello. Il mio problema è che il file sta cominciando a essere pesante e vorrei aumentare il livello di compressione, dal momento che il tempo di compressione non è un problema.

Non riuscivo a trovare nel rubyzip documentazione un modo per specificare il livello di compressione per il file ZIP creato.

Qualcuno sa come cambiare questa impostazione? C'è un altro libreria Ruby che permette di specificare il livello di compressione?

È stato utile?

Soluzione

Ecco il codice che ho creato, cercando in 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

Altri suggerimenti

probabilmente otterrete una migliore trazione chiamando fuori per il programma 'zip' o cosa non fare lo zippare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top