我在磁盘上保存了一个tar.gz文件,并且希望保持其压缩状态,但是我需要打开存档内的一个文件,从中读取一些信息并将其保存在其他地方。
File structure:
base_folder
file_i_need.txt
other_folder
other_file
代码(并不多-我尝试了1000万种不同的方法,这是剩下的)
def self.open_file(file)
uncompressed_file = Gem::Package::TarReader.new(Zlib::GzipReader.open(file))
uncompressed_file.rewind
end
当我在控制台中运行它时,我得到了以下结果。
<Gem::Package::TarReader:0x007fbaac178090>
我可以在这些条目上运行命令。但我还没想出如何在不将其解压到磁盘上的情况下打开一个条目并从中读取内容。我主要需要文本文件中的字符串。
非常感谢您的帮助。也许我只是漏了什么……
TarReader
是可枚举的,返回Entry
。因此,您需要使用uncompressed_file.detect { |f| f.fullname == 'base_folder/file_i_need.txt' }.read
来读取文件。 - Aleksei Matiushkin