开发者

Set compression level when generating a ZIP file using RubyZip

开发者 https://www.devze.com 2022-12-24 10:51 出处:网络
I have a Ruby program that zips a directory tree of XML files using the rubyzip gem. My problem is that the file is starting to be heavy and I would like to increase the compression level, since c开发

I have a Ruby program that zips a directory tree of XML files using the rubyzip gem. My problem is that the file is starting to be heavy and I would like to increase the compression level, since c开发者_开发百科ompression time is not an issue.

I could not find in the rubyzip documentation a way to specify the compression level for the created ZIP file.

Anyone know how to change this setting? Is there another Ruby library that allows to specify compression level?


Here is the code I created by looking at 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


you'll probably get better traction by calling out to the 'zip' program or what not to do the zipping.

0

精彩评论

暂无评论...
验证码 换一张
取 消