Instances of this class are normally accessed via the accessor ZipFile::file. An instance of ZipFsFile behaves like ruby’s builtin File (class) object, except it works on ZipFile entries.
The individual methods are not documented due to their similarity with the methods in File
# File lib/zip/zipfilesystem.rb, line 156 def initialize(mappedZip) @mappedZip = mappedZip end
# File lib/zip/zipfilesystem.rb, line 311 def atime(fileName) e = get_entry(fileName) if e.extra.member? "UniversalTime" e.extra["UniversalTime"].atime else nil end end
# File lib/zip/zipfilesystem.rb, line 289 def basename(fileName) ::File.basename(fileName) end
# File lib/zip/zipfilesystem.rb, line 333 def blockdev?(filename) false end
# File lib/zip/zipfilesystem.rb, line 337 def chardev?(filename) false end
# File lib/zip/zipfilesystem.rb, line 264 def chmod (modeInt, *filenames) filenames.each { |fileName| e = get_entry(fileName) e.fstype = 3 # force convertion filesystem type to unix e.externalFileAttributes = modeInt << 16 } filenames.size end
# File lib/zip/zipfilesystem.rb, line 252 def chown(ownerInt, groupInt, *filenames) filenames.each { |fileName| e = get_entry(fileName) unless e.extra.member?("IUnix") e.extra.create("IUnix") end e.extra["IUnix"].uid = ownerInt e.extra["IUnix"].gid = groupInt } filenames.size end
# File lib/zip/zipfilesystem.rb, line 320 def ctime(fileName) e = get_entry(fileName) if e.extra.member? "UniversalTime" e.extra["UniversalTime"].ctime else nil end end
# File lib/zip/zipfilesystem.rb, line 394 def delete(*args) args.each { |fileName| if directory?(fileName) raise Errno::EISDIR, "Is a directory - \"#{fileName}\"" end @mappedZip.remove(fileName) } end
# File lib/zip/zipfilesystem.rb, line 222 def directory?(fileName) entry = @mappedZip.find_entry(fileName) expand_path(fileName) == "/" || (entry != nil && entry.directory?) end
# File lib/zip/zipfilesystem.rb, line 285 def dirname(fileName) ::File.dirname(fileName) end
# File lib/zip/zipfilesystem.rb, line 197 def executable?(fileName) unix_mode_cmp(fileName, 0111) end
# File lib/zip/zipfilesystem.rb, line 178 def exists?(fileName) expand_path(fileName) == "/" || @mappedZip.find_entry(fileName) != nil end
# File lib/zip/zipfilesystem.rb, line 410 def expand_path(aPath) @mappedZip.expand_path(aPath) end
# File lib/zip/zipfilesystem.rb, line 280 def file?(fileName) entry = @mappedZip.find_entry(fileName) entry != nil && entry.file? end
# File lib/zip/zipfilesystem.rb, line 390 def foreach(fileName, aSep = $/, &aProc) open(fileName) { |is| is.each_line(aSep, &aProc) } end
# File lib/zip/zipfilesystem.rb, line 349 def ftype(fileName) @mappedZip.get_entry(fileName).directory? ? "directory" : "file" end
# File lib/zip/zipfilesystem.rb, line 297 def join(*fragments) ::File.join(*fragments) end
# File lib/zip/zipfilesystem.rb, line 361 def link(fileName, symlinkName) raise NotImplementedError, "The link() function is not implemented" end
# File lib/zip/zipfilesystem.rb, line 307 def mtime(fileName) @mappedZip.get_entry(fileName).mtime end
# File lib/zip/zipfilesystem.rb, line 238 def new(fileName, openMode = "r") open(fileName, openMode) end
# File lib/zip/zipfilesystem.rb, line 227 def open(fileName, openMode = "r", &block) case openMode when "r" @mappedZip.get_input_stream(fileName, &block) when "w" @mappedZip.get_output_stream(fileName, &block) else raise StandardError, "openmode '#{openMode} not supported" unless openMode == "r" end end
Permissions not implemented, so if the file exists it is accessible
# File lib/zip/zipfilesystem.rb, line 365 def pipe raise NotImplementedError, "The pipe() function is not implemented" end
# File lib/zip/zipfilesystem.rb, line 329 def pipe?(filename) false end
# File lib/zip/zipfilesystem.rb, line 386 def popen(*args, &aProc) File.popen(*args, &aProc) end
# File lib/zip/zipfilesystem.rb, line 382 def read(fileName) @mappedZip.read(fileName) end
# File lib/zip/zipfilesystem.rb, line 187 def readable?(fileName) unix_mode_cmp(fileName, 0444) end
# File lib/zip/zipfilesystem.rb, line 378 def readlines(fileName) open(fileName) { |is| is.readlines } end
# File lib/zip/zipfilesystem.rb, line 353 def readlink(fileName) raise NotImplementedError, "The readlink() function is not implemented" end
# File lib/zip/zipfilesystem.rb, line 404 def rename(fileToRename, newName) @mappedZip.rename(fileToRename, newName) { true } end
# File lib/zip/zipfilesystem.rb, line 206 def setgid?(fileName) unix_mode_cmp(fileName, 02000) end
# File lib/zip/zipfilesystem.rb, line 202 def setuid?(fileName) unix_mode_cmp(fileName, 04000) end
# File lib/zip/zipfilesystem.rb, line 242 def size(fileName) @mappedZip.get_entry(fileName).size end
Returns nil for not found and nil for directories
# File lib/zip/zipfilesystem.rb, line 247 def size?(fileName) entry = @mappedZip.find_entry(fileName) return (entry == nil || entry.directory?) ? nil : entry.size end
# File lib/zip/zipfilesystem.rb, line 345 def socket?(fileName) false end
# File lib/zip/zipfilesystem.rb, line 293 def split(fileName) ::File.split(fileName) end
# File lib/zip/zipfilesystem.rb, line 369 def stat(fileName) if ! exists?(fileName) raise Errno::ENOENT, fileName end ZipFsStat.new(self, fileName) end
# File lib/zip/zipfilesystem.rb, line 210 def sticky?(fileName) unix_mode_cmp(fileName, 01000) end
# File lib/zip/zipfilesystem.rb, line 357 def symlink(fileName, symlinkName) raise NotImplementedError, "The symlink() function is not implemented" end
# File lib/zip/zipfilesystem.rb, line 341 def symlink?(fileName) false end
# File lib/zip/zipfilesystem.rb, line 218 def truncate(fileName, len) raise StandardError, "truncate not supported" end
# File lib/zip/zipfilesystem.rb, line 214 def umask(*args) ::File.umask(*args) end
# File lib/zip/zipfilesystem.rb, line 301 def utime(modifiedTime, *fileNames) fileNames.each { |fileName| get_entry(fileName).time = modifiedTime } end
# File lib/zip/zipfilesystem.rb, line 192 def writable?(fileName) unix_mode_cmp(fileName, 0222) end
# File lib/zip/zipfilesystem.rb, line 273 def zero?(fileName) sz = size(fileName) sz == nil || sz == 0 rescue Errno::ENOENT false end