class Zip::FileSystem::ZipFsFile
Instances of this class are normally accessed via the accessor Zip::File::file. An instance of ZipFsFile behaves like ruby's builtin File (class) object, except it works on Zip::File entries.
The individual methods are not documented due to their similarity with the methods in File
Attributes
dir[W]
Public Class Methods
new(mappedZip)
click to toggle source
# File lib/zip/filesystem.rb, line 171 def initialize(mappedZip) @mappedZip = mappedZip end
Public Instance Methods
atime(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 325 def atime(fileName) e = get_entry(fileName) if e.extra.member? 'UniversalTime' e.extra['UniversalTime'].atime elsif e.extra.member? 'NTFS' e.extra['NTFS'].atime end end
basename(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 303 def basename(fileName) ::File.basename(fileName) end
blockdev?(_filename)
click to toggle source
# File lib/zip/filesystem.rb, line 347 def blockdev?(_filename) false end
chardev?(_filename)
click to toggle source
# File lib/zip/filesystem.rb, line 351 def chardev?(_filename) false end
chmod(modeInt, *filenames)
click to toggle source
# File lib/zip/filesystem.rb, line 276 def chmod(modeInt, *filenames) filenames.each do |fileName| e = get_entry(fileName) e.fstype = 3 # force convertion filesystem type to unix e.unix_perms = modeInt e.external_file_attributes = modeInt << 16 e.dirty = true end filenames.size end
chown(ownerInt, groupInt, *filenames)
click to toggle source
# File lib/zip/filesystem.rb, line 266 def chown(ownerInt, groupInt, *filenames) filenames.each do |fileName| e = get_entry(fileName) e.extra.create('IUnix') unless e.extra.member?('IUnix') e.extra['IUnix'].uid = ownerInt e.extra['IUnix'].gid = groupInt end filenames.size end
ctime(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 334 def ctime(fileName) e = get_entry(fileName) if e.extra.member? 'UniversalTime' e.extra['UniversalTime'].ctime elsif e.extra.member? 'NTFS' e.extra['NTFS'].ctime end end
delete(*args)
click to toggle source
# File lib/zip/filesystem.rb, line 406 def delete(*args) args.each do |fileName| if directory?(fileName) raise Errno::EISDIR, "Is a directory - \"#{fileName}\"" end @mappedZip.remove(fileName) end end
Also aliased as: unlink
directory?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 235 def directory?(fileName) entry = @mappedZip.find_entry(fileName) expand_path(fileName) == '/' || (!entry.nil? && entry.directory?) end
dirname(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 299 def dirname(fileName) ::File.dirname(fileName) end
executable?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 210 def executable?(fileName) unix_mode_cmp(fileName, 0111) end
Also aliased as: executable_real?
exists?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 191 def exists?(fileName) expand_path(fileName) == '/' || !@mappedZip.find_entry(fileName).nil? end
expand_path(aPath)
click to toggle source
# File lib/zip/filesystem.rb, line 421 def expand_path(aPath) @mappedZip.expand_path(aPath) end
file?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 294 def file?(fileName) entry = @mappedZip.find_entry(fileName) !entry.nil? && entry.file? end
foreach(fileName, aSep = $/, &aProc)
click to toggle source
# File lib/zip/filesystem.rb, line 402 def foreach(fileName, aSep = $/, &aProc) open(fileName) { |is| is.each_line(aSep, &aProc) } end
ftype(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 363 def ftype(fileName) @mappedZip.get_entry(fileName).directory? ? 'directory' : 'file' end
join(*fragments)
click to toggle source
# File lib/zip/filesystem.rb, line 311 def join(*fragments) ::File.join(*fragments) end
link(_fileName, _symlinkName)
click to toggle source
# File lib/zip/filesystem.rb, line 375 def link(_fileName, _symlinkName) raise NotImplementedError, 'The link() function is not implemented' end
mtime(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 321 def mtime(fileName) @mappedZip.get_entry(fileName).mtime end
new(fileName, openMode = 'r')
click to toggle source
# File lib/zip/filesystem.rb, line 252 def new(fileName, openMode = 'r') open(fileName, openMode) end
open(fileName, openMode = 'r', permissionInt = 0644, &block)
click to toggle source
# File lib/zip/filesystem.rb, line 240 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
owned?(fileName)
Permissions not implemented, so if the file exists it is accessible
Alias for: exists?
pipe()
click to toggle source
# File lib/zip/filesystem.rb, line 379 def pipe raise NotImplementedError, 'The pipe() function is not implemented' end
pipe?(_filename)
click to toggle source
# File lib/zip/filesystem.rb, line 343 def pipe?(_filename) false end
popen(*args, &aProc)
click to toggle source
# File lib/zip/filesystem.rb, line 398 def popen(*args, &aProc) ::File.popen(*args, &aProc) end
read(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 394 def read(fileName) @mappedZip.read(fileName) end
readable?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 200 def readable?(fileName) unix_mode_cmp(fileName, 0444) end
Also aliased as: readable_real?
readlines(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 390 def readlines(fileName) open(fileName) { |is| is.readlines } end
readlink(_fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 367 def readlink(_fileName) raise NotImplementedError, 'The readlink() function is not implemented' end
rename(fileToRename, newName)
click to toggle source
# File lib/zip/filesystem.rb, line 415 def rename(fileToRename, newName) @mappedZip.rename(fileToRename, newName) { true } end
setgid?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 219 def setgid?(fileName) unix_mode_cmp(fileName, 02000) end
setuid?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 215 def setuid?(fileName) unix_mode_cmp(fileName, 04000) end
size(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 256 def size(fileName) @mappedZip.get_entry(fileName).size end
size?(fileName)
click to toggle source
Returns nil for not found and nil for directories
# File lib/zip/filesystem.rb, line 261 def size?(fileName) entry = @mappedZip.find_entry(fileName) (entry.nil? || entry.directory?) ? nil : entry.size end
socket?(_fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 359 def socket?(_fileName) false end
split(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 307 def split(fileName) ::File.split(fileName) end
stat(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 383 def stat(fileName) raise Errno::ENOENT, fileName unless exists?(fileName) ZipFsStat.new(self, fileName) end
Also aliased as: lstat
sticky?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 223 def sticky?(fileName) unix_mode_cmp(fileName, 01000) end
symlink(_fileName, _symlinkName)
click to toggle source
# File lib/zip/filesystem.rb, line 371 def symlink(_fileName, _symlinkName) raise NotImplementedError, 'The symlink() function is not implemented' end
symlink?(_fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 355 def symlink?(_fileName) false end
truncate(_fileName, _len)
click to toggle source
# File lib/zip/filesystem.rb, line 231 def truncate(_fileName, _len) raise StandardError, 'truncate not supported' end
umask(*args)
click to toggle source
# File lib/zip/filesystem.rb, line 227 def umask(*args) ::File.umask(*args) end
utime(modifiedTime, *fileNames)
click to toggle source
# File lib/zip/filesystem.rb, line 315 def utime(modifiedTime, *fileNames) fileNames.each do |fileName| get_entry(fileName).time = modifiedTime end end
writable?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 205 def writable?(fileName) unix_mode_cmp(fileName, 0222) end
Also aliased as: writable_real?
zero?(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 287 def zero?(fileName) sz = size(fileName) sz.nil? || sz == 0 rescue Errno::ENOENT false end
Private Instance Methods
get_entry(fileName)
click to toggle source
# File lib/zip/filesystem.rb, line 175 def get_entry(fileName) unless exists?(fileName) raise Errno::ENOENT, "No such file or directory - #{fileName}" end @mappedZip.find_entry(fileName) end
unix_mode_cmp(fileName, mode)
click to toggle source
# File lib/zip/filesystem.rb, line 183 def unix_mode_cmp(fileName, mode) e = get_entry(fileName) e.fstype == 3 && ((e.external_file_attributes >> 16) & mode) != 0 rescue Errno::ENOENT false end