从ruby中的tar.gz文件读取一个文件
我正在尝试使用以下代码从tar.gz文件中读取特定文件从ruby中的tar.gz文件读取一个文件,ruby,file,file-io,Ruby,File,File Io,我正在尝试使用以下代码从tar.gz文件中读取特定文件 def get_data_file_file(file, type) begin Gem::Package::TarReader.new(Zlib::GzipReader.open(file)).each do |entry| if(entry.full_name == type) return entry.read end end rescue
def get_data_file_file(file, type)
begin
Gem::Package::TarReader.new(Zlib::GzipReader.open(file)).each do |entry|
if(entry.full_name == type)
return entry.read
end
end
rescue Zlib::GzipFile::Error => e
stacktrace = e.backtrace.join("\n")
LOGGER.error("ERROR: #{e.message}\n #{stacktrace}")
return nil
end
return nil
end
但问题来了,因为文件的大小为“entry.read”,一次读取整个文件并保存在内存中
有人知道其他的选择吗?感谢您的帮助
谢谢。
Amit尝试逐块读取,方法是提供一个要读取的参数,该参数包含要读取的字节数:
entry.read(1024*1024) #1mb each time
更多信息请点击此处:
谢谢您的回复。是的,我可以使用你建议的方法,但我正在查看是否有其他库提供逐行读取压缩文件。