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 161 def initialize(mappedZip) @mappedZip = mappedZip end
# File lib/zip/zipfilesystem.rb, line 319 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 297 def basename(fileName) ::File.basename(fileName) end
# File lib/zip/zipfilesystem.rb, line 341 def blockdev?(filename) false end
# File lib/zip/zipfilesystem.rb, line 345 def chardev?(filename) false end
# File lib/zip/zipfilesystem.rb, line 270 def chmod (modeInt, *filenames) filenames.each { |fileName| e = get_entry(fileName) e.fstype = 3 # force convertion filesystem type to unix e.unix_perms = modeInt e.externalFileAttributes = modeInt << 16 e.dirty = true } filenames.size end
# File lib/zip/zipfilesystem.rb, line 258 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 328 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 402 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 227 def directory?(fileName) entry = @mappedZip.find_entry(fileName) expand_path(fileName) == "/" || (entry != nil && entry.directory?) end
# File lib/zip/zipfilesystem.rb, line 293 def dirname(fileName) ::File.dirname(fileName) end
# File lib/zip/zipfilesystem.rb, line 202 def executable?(fileName) unix_mode_cmp(fileName, 0111) end
# File lib/zip/zipfilesystem.rb, line 183 def exists?(fileName) expand_path(fileName) == "/" || @mappedZip.find_entry(fileName) != nil end
# File lib/zip/zipfilesystem.rb, line 418 def expand_path(aPath) @mappedZip.expand_path(aPath) end
# File lib/zip/zipfilesystem.rb, line 288 def file?(fileName) entry = @mappedZip.find_entry(fileName) entry != nil && entry.file? end
# File lib/zip/zipfilesystem.rb, line 398 def foreach(fileName, aSep = $/, &aProc) open(fileName) { |is| is.each_line(aSep, &aProc) } end
# File lib/zip/zipfilesystem.rb, line 357 def ftype(fileName) @mappedZip.get_entry(fileName).directory? ? "directory" : "file" end
# File lib/zip/zipfilesystem.rb, line 305 def join(*fragments) ::File.join(*fragments) end
# File lib/zip/zipfilesystem.rb, line 369 def link(fileName, symlinkName) raise NotImplementedError, "The link() function is not implemented" end
# File lib/zip/zipfilesystem.rb, line 315 def mtime(fileName) @mappedZip.get_entry(fileName).mtime end
# File lib/zip/zipfilesystem.rb, line 244 def new(fileName, openMode = "r") open(fileName, openMode) end
# File lib/zip/zipfilesystem.rb, line 232 def open(fileName, openMode = "r", permissionInt = 0644, &block) openMode.gsub!("b", "") # ignore b option case openMode when "r" @mappedZip.get_input_stream(fileName, &block) when "w" @mappedZip.get_output_stream(fileName, permissionInt, &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 373 def pipe raise NotImplementedError, "The pipe() function is not implemented" end
# File lib/zip/zipfilesystem.rb, line 337 def pipe?(filename) false end
# File lib/zip/zipfilesystem.rb, line 394 def popen(*args, &aProc) File.popen(*args, &aProc) end
# File lib/zip/zipfilesystem.rb, line 390 def read(fileName) @mappedZip.read(fileName) end
# File lib/zip/zipfilesystem.rb, line 192 def readable?(fileName) unix_mode_cmp(fileName, 0444) end
# File lib/zip/zipfilesystem.rb, line 386 def readlines(fileName) open(fileName) { |is| is.readlines } end
# File lib/zip/zipfilesystem.rb, line 361 def readlink(fileName) raise NotImplementedError, "The readlink() function is not implemented" end
# File lib/zip/zipfilesystem.rb, line 412 def rename(fileToRename, newName) @mappedZip.rename(fileToRename, newName) { true } end
# File lib/zip/zipfilesystem.rb, line 211 def setgid?(fileName) unix_mode_cmp(fileName, 02000) end
# File lib/zip/zipfilesystem.rb, line 207 def setuid?(fileName) unix_mode_cmp(fileName, 04000) end
# File lib/zip/zipfilesystem.rb, line 248 def size(fileName) @mappedZip.get_entry(fileName).size end
Returns nil for not found and nil for directories
# File lib/zip/zipfilesystem.rb, line 253 def size?(fileName) entry = @mappedZip.find_entry(fileName) return (entry == nil || entry.directory?) ? nil : entry.size end
# File lib/zip/zipfilesystem.rb, line 353 def socket?(fileName) false end
# File lib/zip/zipfilesystem.rb, line 301 def split(fileName) ::File.split(fileName) end
# File lib/zip/zipfilesystem.rb, line 377 def stat(fileName) if ! exists?(fileName) raise Errno::ENOENT, fileName end ZipFsStat.new(self, fileName) end
# File lib/zip/zipfilesystem.rb, line 215 def sticky?(fileName) unix_mode_cmp(fileName, 01000) end
# File lib/zip/zipfilesystem.rb, line 365 def symlink(fileName, symlinkName) raise NotImplementedError, "The symlink() function is not implemented" end
# File lib/zip/zipfilesystem.rb, line 349 def symlink?(fileName) false end
# File lib/zip/zipfilesystem.rb, line 223 def truncate(fileName, len) raise StandardError, "truncate not supported" end
# File lib/zip/zipfilesystem.rb, line 219 def umask(*args) ::File.umask(*args) end
# File lib/zip/zipfilesystem.rb, line 309 def utime(modifiedTime, *fileNames) fileNames.each { |fileName| get_entry(fileName).time = modifiedTime } end
# File lib/zip/zipfilesystem.rb, line 197 def writable?(fileName) unix_mode_cmp(fileName, 0222) end
# File lib/zip/zipfilesystem.rb, line 281 def zero?(fileName) sz = size(fileName) sz == nil || sz == 0 rescue Errno::ENOENT false end