У меня есть файл tar.gz, сохраненный на диске, и я хочу оставить его там, но мне нужно открыть один файл в архиве, прочитать его и сохранить некоторая информация где-то.Чтение из файла 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'] (http://ruby-doc.org/stdlib-1.9.3/libdoc/rubygems/rdoc/Gem/Package/TarReader/Entry.html) , Итак, вам нужно будет 'uncompressed_file.detect {| f | f.fullname == 'base_folder/file_i_need.txt'} .read'. – mudasobwa
спасибо. делает полный смысл - не знаю, почему я сам этого не понял. Если вы хотите, чтобы точки поставили это как ответ :) – tomr
Поскольку проблема была решена, я отправил ее в качестве ответа. – mudasobwa