我正在尝试使用以下代码提取 .tar 文件,但是获取无效的文件格式错误,在ruby中提取.tar文件的方法是什么,仅供参考我正在使用窗口操作系统。我可以将文件属性看作Tar archive (application/x-tar)
file_path = "/home/logan/skype/bill_2015-12-14.txt.tar"
extract = Gem::Package::TarReader.new(Zlib::GzipReader.open(file_name))
错误:
Zlib::GzipFile::Error: not in gzip format
from (irb):68:in `initialize'
from (irb):68:in `open'
答案 0 :(得分:0)
在The Buckblog上给出了一个解决方案,它看起来像这样:
require 'rubygems/package'
File.open("chunky_png-1.3.4.gem", "rb") do |file|
Gem::Package::TarReader.new(file) do |tar|
tar.each do |entry|
if entry.file?
FileUtils.mkdir_p(File.dirname(entry.full_name))
File.open(entry.full_name, "wb") do |f|
f.write(entry.read)
end
File.chmod(entry.header.mode, entry.full_name)
end
end
end
end