.gz ファイルを解凍し、チャンクごとに準備します
概要
読みたい非常に大きな .gz ファイルが多数あります。ただし、RAM に悪影響を与える可能性があるため、各ファイルを一度に読み取るのではなく、チャンクごとに読み取りたいと考えています。どうやってやるの?ドキュメントでは、ファイル全体を読み取る従来のアプローチについて説明しています。
Zlib::GzipReader.open('hoge.gz') do |gz|
print gz.read
end
File.open('hoge.gz') do |f|
gz = Zlib::GzipReader.new(f)
print gz.read
gz.close
end
解決策
この例はどこにもありません。ドキュメントを読む必要がありました。
require 'zlib'
def read_gz_by_chunk
infile = open("file_name.gz")
rgz = Zlib::GzipReader.new(infile)
while(!rgz.eof)
data = rgz.readpartial(256)
# do stuff
puts data
end
end