Установите уровень сжатия при генерации zip -файла с помощью Rubyzip

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

  •  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» или что не делать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top