ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别

标签 ruby compression rubyzip

我有一个 Ruby 程序,它使用 rubyzip 压缩 XML 文件的目录树。 gem 。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。

我在 rubyzip documentation 中找不到一种为创建的 ZIP 文件指定压缩级别的方法。

有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的 Ruby 库?

最佳答案

这是我通过查看 ruby​​zip 内部创建的代码。

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

关于ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2471407/

相关文章:

html - 如何在 ruby​​ on rails 3.2 中使用 id 显示字段名称

ruby - RefineryCMS 安装问题

algorithm - 简单的压缩算法 - 如何避免标记字符串?

ruby-on-rails - 创建多个csv文件并使用rails在一个zip归档文件中全部下载

ruby - 在不初始化对象的情况下存储变量? ruby gem 'Mail'

c++ - 霍夫曼数据压缩填充表和反码问题

delphi - JEDI JCL 压缩库无法打开跨区存档文件

ruby-on-rails - 使用 ruby​​zip 打开 multipart/form-data ZIP 文件

ruby-on-rails - NameError - 未初始化的常量 Zip

php - 如何使用 watir-webdriver 遍历 DOM(子级/兄弟级)?