从 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>
而且我可以 运行 对条目执行命令。我只是还没有想出如何打开一个条目并从中读取而不将其解压缩到磁盘。我主要需要文本文件中的字符串。
感谢任何帮助。我可能只是遗漏了一些东西...
TarReader
是 Enumerable
,返回 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
希望对您有所帮助。
我有一个 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>
而且我可以 运行 对条目执行命令。我只是还没有想出如何打开一个条目并从中读取而不将其解压缩到磁盘。我主要需要文本文件中的字符串。
感谢任何帮助。我可能只是遗漏了一些东西...
TarReader
是 Enumerable
,返回 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
希望对您有所帮助。