
[英]In Ruby, how can I extract a tar archive stream directly to the filesystem?
[英]how to extract .tar file
我正在尝试使用以下代码提取.tar文件,但出现文件格式无效错误,有什么方法可以在 ruby 中提取 .tar 文件,仅供参考我使用的是 Windows 操作系统。 我可以看到文件属性为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'
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.