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

5
我有一个使用rubyzip gem压缩XML文件目录树的Ruby程序。我的问题是文件开始变得很重,我想增加压缩级别,因为压缩时间不是问题。
我在rubyzip文档中找不到指定创建的ZIP文件的压缩级别的方法。
有人知道如何更改此设置吗?还有另一个Ruby库允许指定压缩级别吗?
2个回答

8

我是通过查看rubyzip内部代码所创建的这段代码。

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

通过调用'zip'程序或类似的程序来进行压缩,这样可能会提高效率。


该程序旨在在多个平台上运行。我不想强制用户指定其压缩程序及其使用方法。我更喜欢使用Ruby解决方案。谢谢。 - Vincent Robert
1
深入源代码可能是您唯一的选择。 - rogerdpack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接