从 ruby 中的 gzip 中提取多个文件

Extract multiple files from gzip in ruby

实际上我在一个 .gz 文件中有多个 .txt 文件。我想从 .gz 文件中提取所有 .txt 文件...例如:

gz_extract = Zlib::GzipReader.open("sample.gz")
gz_extract.each do |extract|
  print extract
end

上面的代码实际上打印了 .gz 文件中存在的任何内容,但实际上我想解压缩 .txt 文件。我希望你能理解这个问题....

Actually i have a multiple .txt files in a .gz file. I would like to extract all the .txt files from .gz file.

gzip 不能同时包含多个文件。它只适用于一个文件。

如果你想压缩多个文件,你首先需要将它们tar放在一起,然后gzip得到的.tar文件,这与你的文件不一样使用.

如果您可以使用您提供的代码读取sample.gz的内容,则进一步证明您只有一个文件。您也可以尝试从命令行 gunzip sample.gz 再次证明它只包含一个文件。

编辑:

如果您希望代码输出未压缩的 .txt 文件:

output_file = File.open('sample.txt', 'w')

gz_extract = Zlib::GzipReader.open("sample.gz")
gz_extract.each_line do |extract|
  output_file.write(extract)
end

output_file.close