【发布时间】:2015-05-20 16:27:21
【问题描述】:
我有一个 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_file.detect { |f| f.fullname == 'base_folder/file_i_need.txt' }.read。 -
谢谢。完全有道理-不知道为什么我自己没有做到这一点。如果您想要积分作为答案发布:)
-
既然问题解决了,我贴出来作为答案。
标签: ruby ruby-on-rails-4 tar gzip