Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ruby中的tar.gz文件读取一个文件_Ruby_File_File Io - Fatal编程技术网

从ruby中的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

我正在尝试使用以下代码从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 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
更多信息请点击此处:

谢谢您的回复。是的,我可以使用你建议的方法,但我正在查看是否有其他库提供逐行读取压缩文件。