From: celldee Date: 2008-03-11T02:43:45+09:00 Subject: Re: Getting files out of a .tar.gz archive Hi Daniel, I saw that, but I don't want to expand the .tar.gz any more than I have to. The code that I put up earlier is getting what I want out of the .tar file using Minitar::Reader which I quite like, I'm just looking to eliminate the gunzip step. Minitar.unpack expands the .tar.gz and writes the files to disk, which means that I'll have to mess around in the filesystem more than I need to. Thanks for your reply, Chris http://smuby.org On Mar 10, 5:04 pm, "Daniel Brumbaugh Keeney" wrote: > 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