Установите уровень сжатия при генерации zip -файла с помощью Rubyzip
-
20-09-2019 - |
Вопрос
У меня есть программа Ruby, которая запитывает дерево каталогов файлов XML, используя Rubyzip жемчужина Моя проблема в том, что файл начинает быть тяжелым, и я хотел бы увеличить уровень сжатия, поскольку время сжатия не является проблемой.
Я не мог найти в Документация Rubyzip Способ указать уровень сжатия для созданного ZIP -файла.
Кто -нибудь знает, как изменить эту настройку? Есть ли еще одна библиотека Ruby, которая позволяет указать уровень сжатия?
Решение
Вот код, который я создал, глядя на rubyzip Internal.
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
Другие советы
Вы, вероятно, получите лучшую тягу, вызывая программу «ZIP» или что не делать.
Не связан с StackOverflow