Установить уровень сжатия при создании ZIP-файла с использованием RubyZip - PullRequest
5 голосов
/ 18 марта 2010

У меня есть программа Ruby, которая архивирует дерево каталогов XML-файлов, используя гем rubyzip . Моя проблема в том, что файл становится тяжелым, и я хотел бы увеличить уровень сжатия, поскольку время сжатия не является проблемой.

Я не смог найти в документации rubyzip способ указать уровень сжатия для созданного ZIP-файла.

Кто-нибудь знает, как изменить эту настройку? Есть ли другая библиотека Ruby, которая позволяет указывать уровень сжатия?

Ответы [ 2 ]

8 голосов
/ 27 апреля 2010

Вот код, который я создал, посмотрев на 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
0 голосов
/ 18 марта 2010

вы, вероятно, получите лучшее сцепление с дорогой, вызвав программу 'zip' или что не делать архивирование.

...