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