从 tar.gz 文件中读取而不保存解压后的版本

Read from a tar.gz file without saving the unpacked version

我有一个 tar.gz 文件保存在磁盘上,我想把它打包放在那里,但我需要打开存档中的一个文件,从中读取并在某处保存一些信息。

File structure:
base_folder
  file_i_need.txt
  other_folder
  other_file

代码(不多 - 我尝试了 10mio 种不同的方法,这就是剩下的)

def self.open_file(file)
    uncompressed_file = Gem::Package::TarReader.new(Zlib::GzipReader.open(file))
uncompressed_file.rewind
end

当我在控制台中 运行 它时,我得到

<Gem::Package::TarReader:0x007fbaac178090>

而且我可以 运行 对条目执行命令。我只是还没有想出如何打开一个条目并从中读取而不将其解压缩到磁盘。我主要需要文本文件中的字符串。

感谢任何帮助。我可能只是遗漏了一些东西...

TarReaderEnumerable,返回 Entry

也就是说,要通过文件名从文件中检索文本内容可能

uncompressed = Gem::Package::TarReader.new(Zlib::GzipReader.open(file))
text = uncompressed.detect do |f| 
  f.fullname == 'base_folder/file_i_need.txt'
end.read
#⇒ Hello, I’m content of the text file, located inside gzipped tar

希望对您有所帮助。