Module: Zip::ZipFileSystem
- Included in:
- ZipFile
- Defined in:
- lib/pik/contrib/zip/zipfilesystem.rb
Overview
The ZipFileSystem API provides an API for accessing entries in a zip archive that is similar to ruby’s builtin File and Dir classes.
Requiring ‘zip/zipfilesystem’ includes this module in ZipFile making the methods in this module available on ZipFile objects.
Using this API the following example creates a new zip file my.zip
containing a normal entry with the name first.txt
, a directory entry named mydir
and finally another normal entry named second.txt
require 'zip/zipfilesystem'
Zip::ZipFile.open("my.zip", Zip::ZipFile::CREATE) {
|zipfile|
zipfile.file.open("first.txt", "w") { |f| f.puts "Hello world" }
zipfile.dir.mkdir("mydir")
zipfile.file.open("mydir/second.txt", "w") { |f| f.puts "Hello again" }
}
Reading is as easy as writing, as the following example shows. The example writes the contents of first.txt
from zip archive my.zip
to standard out.
require 'zip/zipfilesystem'
Zip::ZipFile.open("my.zip") {
|zipfile|
puts zipfile.file.read("first.txt")
}
Defined Under Namespace
Classes: ZipFileNameMapper, ZipFsDir, ZipFsDirIterator, ZipFsFile
Instance Method Summary collapse
-
#dir ⇒ Object
Returns a ZipFsDir which is much like ruby’s builtin Dir (class) object, except it works on the ZipFile on which this method is invoked.
-
#file ⇒ Object
Returns a ZipFsFile which is much like ruby’s builtin File (class) object, except it works on the ZipFile on which this method is invoked.
-
#initialize ⇒ Object
:nodoc:.
Instance Method Details
#dir ⇒ Object
Returns a ZipFsDir which is much like ruby’s builtin Dir (class) object, except it works on the ZipFile on which this method is invoked
50 51 52 |
# File 'lib/pik/contrib/zip/zipfilesystem.rb', line 50 def dir @zipFsDir end |
#file ⇒ Object
Returns a ZipFsFile which is much like ruby’s builtin File (class) object, except it works on the ZipFile on which this method is invoked
57 58 59 |
# File 'lib/pik/contrib/zip/zipfilesystem.rb', line 57 def file @zipFsFile end |
#initialize ⇒ Object
:nodoc:
39 40 41 42 43 44 45 |
# File 'lib/pik/contrib/zip/zipfilesystem.rb', line 39 def initialize # :nodoc: mappedZip = ZipFileNameMapper.new(self) @zipFsDir = ZipFsDir.new(mappedZip) @zipFsFile = ZipFsFile.new(mappedZip) @zipFsDir.file = @zipFsFile @zipFsFile.dir = @zipFsDir end |