大量のファイル (4 GB) で Zlib::Deflate.deflate を使用しようとしています。これには明らかな問題があります。その 1 つは、ファイル全体を一度にメモリにロードできないことです。Zlib::GzipWriter はストリームで動作するため動作しますが、zlib 圧縮ではありません。何か案は?
2097 次
1 に答える
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
于 2010-04-12T16:36:59.093 に答える