HI *, I’m trying to unzip a file programmatically, and having lots of
difficulties.
ruby-1.9.2-p136 :009 > data = StringIO.new( open( ‘test.zip’, ‘r’ ).read
)
=> #StringIO:0x00000100c4c8a8
ruby-1.9.2-p136 :010 > Zlib::GzipReader.new(data).read
Zlib::GzipFile::Error: not in gzip format
This is with both zlib in stdlib and pr-zlib from github.
What’s strange is that the file seems in the right format:
[ngw@slicingupeyeballs:~]$ file test.zip
test.zip: Zip archive data, at least v1.0 to extract
What I need is a supersimple solution to extract a zip file and retain
the same directory structure, no more no less
Someone worked on something like this before ?
ngw
Hi,
ruby-1.9.2-p136 :009 > data = StringIO.new( open( ‘test.zip’, ‘r’ ).read )
I see that you want to read a ZIP format file, “test.zip”. Right?
ruby-1.9.2-p136 :010 > Zlib::GzipReader.new(data).read
Zlib::GzipFile::Error: not in gzip format
However, you used Zlib::GzipReader. This class is used for not zip
format,
but gzip format [1], so that error occurred.
One way to unzip a file is to use zipruby gem [2]. Please try it.
[1]
http://www.ruby-doc.org/stdlib/libdoc/zlib/rdoc/classes/Zlib/GzipReader.html
[2] search | RubyGems.org | your community gem host
Regards,
On 3/9/2011 06:14, Y. NOBUOKA wrote:
One way to unzip a file is to use zipruby gem [2]. Please try it.
You might also want to take a look at the archive-zip gem:
http://rubygems.org/gems/archive-zip
Support for Ruby 1.9 is still in the works, but it should do what you
want with minimal effort otherwise.
-Jeremy
On 2011-03-09 15:36:38 +0100, Jeremy B. said:
On 3/9/2011 06:14, Y. NOBUOKA wrote:
One way to unzip a file is to use zipruby gem [2]. Please try it.
You might also want to take a look at the archive-zip gem:
archive-zip | RubyGems.org | your community gem host
Support for Ruby 1.9 is still in the works, but it should do what you
want with minimal effort otherwise.
Thank you guys, I solved with zipruby.
Unfortunately I’m on 1.9, but does archive-zip support both zip and gzip
?
ngw
On 03/09/2011 06:50 PM, Nicholas W. wrote:
Unfortunately I’m on 1.9, but does archive-zip support both zip and gzip ?
No, it does not and will not. While the two technologies share the same
underlying compression codec, they each use the codec quite differently.
A ZIP file is an archive of one or more files and directories each
individually compressed, or possibly not compressed at all. A GZIP file
is a compressed version of a single file’s contents. Those contents
could be, and often are, that of a TAR file which itself contains one or
more uncompressed files and directories; however, this method of
archival is completely different than that of a ZIP file.
If you want to extract an actual GZIP file, take a look at
Zlib::GzipReader included with the standard library:
http://rdoc.info/stdlib/zlib/1.9.2/Zlib/GzipReader
-Jeremy