Ruby zlib收集大量数据

时间:2010-04-12 14:59:57

标签: ruby zlib compression deflate

我正在尝试在大型文件(4演出)上使用Zlib :: Deflate.deflate。这样做有明显的问题,第一个问题是我无法一次性将整个文件加载到内存中。 Zlib :: GzipWriter可以工作,因为它适用于流,但它不是zlib压缩。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

你可以尝试实例化一个Zlib :: Deflate流并从你的大文件中逐步提供数据。 Zlib :: Deflate :: deflate声称在幕后做这类事情。

它看起来像这样:

z = Zlib::Deflate.new

File.open "big_uncompressed_file" do |f|
  File.open "big_compressed_file", "w" do |w|
    f.each do |str|
      w << z.deflate str, Zlib::SYNC_FLUSH
    end
  end
end
z.finish
z.close

ruby zlib docs

notes on zlib flush flags