From: Daniel Brumbaugh Keeney Date: 2008-03-11T02:04:08+09:00 Subject: Re: Getting files out of a .tar.gz archive On Mon, Mar 10, 2008 at 9:09 AM, celldee wrote: > Hi, > > I have a .tar.gz file containing some xml files. I need to locate > particular files in the archive and process them. I'm looking for a > pure Ruby way to do this without resorting to external system > commands. > > I found Archive::Tar::Minitar that allows me to process my files once > I have expanded the .tar.gz file to a .tar file. So I can do this :- > > open(@tarfile, "rb") do |f| > Archive::Tar::Minitar::Reader.open(f).each do |entry| > fpl = StringIO.new( entry.read) if entry.name =~ / > #{@date}#{channel}_pl/ > fpi = StringIO.new( entry.read) if entry.name =~ / > #{@date}#{channel}_pi/ > end > end > > However, in order to get a tar file, I have to call gunzip to expand > my .tar.gz file. Does anybody know of a way for me to replace the > gunzip call with a Ruby library call of some sort? Or does anyone have > suggestions for an alternative way to do this? > > Cheers, > > Chris > http://smuby.org > > Use the docs. From Minitar's readme: tgz = Zlib::GzipReader.new(File.open('test.tgz', 'rb')) # Warning: tgz and the file will be closed. Minitar.unpack(tgz, 'x') For GZip and the rest of the standard library, http://www.ruby-doc.org/stdlib/ Daniel Brumbaugh Keeney