2010-03-18 66 views
5

我有拉链的使用rubyzip宝石XML文件的目录树一个Ruby程序的ZIP文件时,设置压缩级别。我的问题是,文件开始变得沉重,我想增加压缩级别,因为压缩时间不是问题。生成使用RubyZip

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

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

回答

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

你可能会被调出的“拉链”的程序或什么都不做的压缩和解获得更好的牵引力。

+0

此程序旨在运行在许多平台上。我不想强制用户指定其压缩程序以及如何使用它。我更喜欢Ruby解决方案。谢谢 – 2010-03-18 17:15:56

+1

潜入源可能是您唯一的选择。 – rogerdpack 2010-03-26 22:09:15