【问题标题】:Set compression level when generating a ZIP file using RubyZip使用 RubyZip 生成 ZIP 文件时设置压缩级别
【发布时间】:2010-03-18 16:09:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby compression rubyzip


    【解决方案1】:

    这是我通过查看 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
    

    【讨论】:

      【解决方案2】:

      您可能会通过调用“压缩”程序或不进行压缩来获得更好的牵引力。

      【讨论】:

      • 该程序旨在在许多平台上运行。我不想强迫用户指定它的压缩程序以及如何使用它。我更喜欢 Ruby 解决方案。谢谢
      • 潜入源代码可能是你唯一的选择。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2011-04-27
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多