使用rubyzip解压缩文件时的内存使用情况

时间:2015-02-17 12:23:43

标签: ruby unzip rubyzip

我在rake任务期间使用rubyzip解压缩一些文件,但我发现在解压缩文件后所使用的内存不可用。我必须重新启动服务器才能回收内存。其他人有类似问题吗?任何解决方法?

我使用与github上的示例相同的代码解压缩

https://github.com/rubyzip/rubyzip

Zip::File.open('foo.zip') do |zip_file|
  # Handle entries one by one
  zip_file.each do |entry|
    # Extract to file/directory/symlink
    puts "Extracting #{entry.name}"
    entry.extract(dest_file)

  end
end

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

如果您必须对数据进行操作,则可以直接从zip存档中对其进行流式传输,并在当时使用一行。使用此代码我对内存使用没有任何问题。

require 'csv'
require 'zip'

zip_file = Zip::File.open('foo.zip')
entry = zip_file.entries.first
puts "Extracting #{entry.name}"
CSV.parse(entry.get_input_stream, headers: true) do |row|
  # do something with row
  p row
end

修改

您可以遍历流(不受限于解析CSV):

entry.get_input_stream.each do |line|
   p line
end