Stellen Sie die Komprimierungsstufe beim Generieren einer ZIP -Datei mit Rubyzip ein
-
20-09-2019 - |
Frage
Ich habe ein Ruby -Programm, das einen Verzeichnisbaum von XML -Dateien mit dem verschnulzt Rubyzip Juwel. Mein Problem ist, dass die Datei anfängt, schwer zu sein, und ich möchte den Kompressionsniveau erhöhen, da die Kompressionszeit kein Problem ist.
Ich konnte in der nicht finden Rubyzip -Dokumentation Eine Möglichkeit, die Komprimierungsstufe für die erstellte ZIP -Datei anzugeben.
Weiß jemand, wie man diese Einstellung ändert? Gibt es eine andere Ruby -Bibliothek, mit der die Komprimierungsstufe angegeben werden kann?
Lösung
Hier ist der Code, den ich mit Rubyzip Internal erstellt habe.
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
Andere Tipps
Sie werden wahrscheinlich eine bessere Traktion bekommen, indem Sie zum "Zip" -Programm aufrufen oder nicht das Reißverschluss machen.