Objects of class File::Stat encapsulate common status information for File objects. The information is recorded at the
moment the File::Stat object is created; changes made to the file
after that point will not be reflected. File::Stat objects are returned by
IO#stat
,
File.stat
,
File#lstat
, and
File.lstat
.
Many of these methods return platform-specific
values, and not all values are meaningful on all systems.
See also
Kernel#test
on page 425.
|
instance methods
|
|
<=>
|
statfile <=> anOtherStat
-> -1, 0, 1
|
|
Compares File::Stat objects by comparing their respective
modification times.
|
f1 = File.new("f1", "w")
|
|
sleep 1
|
|
f2 = File.new("f2", "w")
|
|
f1.stat <=> f2.stat
|
» |
-1
|
|
|
atime
|
statfile.atime
-> aTime
|
|
Returns the last access time for this file
as an object of class Time.
|
File.stat("testfile").atime
|
» |
Wed Dec 31 18:00:00 CST 1969
|
|
|
blksize
|
statfile.blksize
-> anInteger
|
|
Returns the native file system's block size.
Will return 0 on platforms that don't support this information.
|
File.stat("testfile").blksize
|
» |
4096
|
|
|
blockdev?
|
statfile.blockdev?
-> true or false
|
|
Returns true if the file is a block device, false
if it isn't or
if the operating system doesn't support this feature.
|
File.stat("testfile").blockdev?
|
» |
false
|
|
|
blocks
|
statfile.blocks
-> anInteger
|
|
Returns the number of native file system blocks allocated for
this file, or 0
if the operating system doesn't support this feature.
|
File.stat("testfile").blocks
|
» |
2
|
|
|
chardev?
|
statfile.chardev?
-> true or false
|
|
Returns true if the file is a character device, false
if it isn't or
if the operating system doesn't support this feature.
|
File.stat("/dev/tty").chardev?
|
» |
true
|
|
|
ctime
|
statfile.ctime
-> aTime
|
|
Returns the change time for statfile (that is, the time
directory information about the file was changed, not the file
itself).
|
File.stat("testfile").ctime
|
» |
Sun Jun 09 00:17:19 CDT 2002
|
|
|
dev
|
statfile.dev
-> aFixnum
|
|
Returns an integer representing the device on which statfile
resides.
|
File.stat("testfile").dev
|
» |
774
|
|
|
directory?
|
statfile.directory?
-> true or false
|
|
Returns true if statfile is a directory, false
otherwise.
|
File.stat("testfile").directory?
|
» |
false
|
|
File.stat(".").directory?
|
» |
true
|
|
|
executable?
|
statfile.executable?
-> true or false
|
|
Returns true if statfile is executable or if the
operating system doesn't distinguish executable files from
nonexecutable files. The tests are made using the effective
owner of the process.
|
File.stat("testfile").executable?
|
» |
false
|
|
|
executable_real?
|
statfile.executable_real?
-> true or false
|
|
Same as executable?, but tests using the real owner of the
process.
|
|
file?
|
statfile.file?
-> true or false
|
|
Returns true if statfile is a regular file (not a device
file, pipe, socket, etc.).
|
File.stat("testfile").file?
|
» |
true
|
|
|
ftype
|
statfile.ftype
-> fileType
|
|
Identifies the type of statfile.
The return string is one of:
``file'',
``directory'',
``characterSpecial'',
``blockSpecial'',
``fifo'',
``link'', or
``socket''.
|
File.stat("/dev/tty").ftype
|
» |
"characterSpecial"
|
|
|
gid
|
statfile.gid
-> aFixnum
|
|
Returns the numeric group id of the owner of statfile.
|
File.stat("testfile").gid
|
» |
500
|
|
|
grpowned?
|
statfile.grpowned?
-> true or false
|
|
Returns true if the effective group id of the process is the same
as the group id of statfile.
On Windows NT, returns false.
|
File.stat("testfile").grpowned?
|
» |
true
|
|
File.stat("/etc/passwd").grpowned?
|
» |
false
|
|
|
ino
|
statfile.ino
-> aFixnum
|
|
Returns the inode number for statfile.
|
File.stat("testfile").ino
|
» |
43331
|
|
|
mode
|
statfile.mode
-> aFixnum
|
|
Returns an integer representing the permission bits of statfile. The meaning of the bits is platform dependent; on Unix
systems, see stat(2).
|
File.chmod(0644, "testfile")
|
» |
1
|
|
s = File.stat("testfile")
|
|
sprintf("%o", s.mode)
|
» |
"100644"
|
|
|
mtime
|
statfile.mtime
-> aTime
|
|
Returns the modification time for statfile.
|
File.stat("testfile").mtime
|
» |
Sun Jun 09 00:17:19 CDT 2002
|
|
|
nlink
|
statfile.nlink
-> aFixnum
|
|
Returns the number of hard links to statfile.
|
File.stat("testfile").nlink
|
» |
1
|
|
File.link("testfile", "testfile.bak")
|
» |
0
|
|
File.stat("testfile").nlink
|
» |
2
|
|
|
owned?
|
statfile.owned?
-> true or false
|
|
Returns true if the effective user id of the process is the same
as the owner of statfile.
|
File.stat("testfile").owned?
|
» |
true
|
|
File.stat("/etc/passwd").owned?
|
» |
false
|
|
|
pipe?
|
statfile.pipe?
-> true or false
|
|
Returns true if the operating system supports pipes and statfile is a pipe; false otherwise.
|
|
rdev
|
statfile.rdev
-> aFixnum
|
|
Returns an integer representing the device type on which statfile
resides. Returns 0
if the operating system doesn't support this feature.
|
File.stat("/dev/fd0").rdev
|
» |
512
|
|
|
readable?
|
statfile.readable?
-> true or false
|
|
Returns true if statfile is readable by the effective
user id of this process.
|
File.stat("testfile").readable?
|
» |
true
|
|
|
readable_real?
|
statfile.readable_real?
-> true or false
|
|
Returns true if statfile is readable by the real
user id of this process.
|
File.stat("testfile").readable_real?
|
» |
true
|
|
|
setgid?
|
statfile.setgid?
-> true or false
|
|
Returns true if statfile has the set-group-id
permission bit set, false if it doesn't or
if the operating system doesn't support this feature.
|
File.stat("/usr/sbin/lpc").setgid?
|
» |
true
|
|
|
setuid?
|
statfile.setuid?
-> true or false
|
|
Returns true if statfile has the set-user-id
permission bit set, false if it doesn't or
if the operating system doesn't support this feature.
|
File.stat("/bin/su").setuid?
|
» |
true
|
|
|
size
|
statfile.size
-> aFixnum
|
|
Returns the size of statfile in bytes.
|
File.stat("testfile").size
|
» |
66
|
|
|
size?
|
statfile.size?
-> aFixnum or nil
|
|
Returns nil if statfile is a zero-length file; otherwise,
returns the file size.
|
File.stat("testfile").size?
|
» |
66
|
|
|
socket?
|
statfile.socket?
-> true or false
|
|
Returns true if statfile is a socket, false if
it isn't or
if the operating system doesn't support this feature.
|
File.stat("testfile").socket?
|
» |
false
|
|
|
sticky?
|
statfile.sticky?
-> true or false
|
|
Returns true if statfile has its sticky bit set, false if it doesn't or if the operating system doesn't
support this feature.
|
File.stat("testfile").sticky?
|
» |
false
|
|
|
symlink?
|
statfile.symlink?
-> true or false
|
|
Returns true if statfile is a symbolic link, false if it isn't or if the operating system doesn't
support this feature. As
File.stat
automatically follows
symbolic links, symlink? will always be false for an object returned by
File.stat
.
|
File.symlink("testfile", "alink")
|
» |
0
|
|
File.stat("alink").symlink?
|
» |
false
|
|
File.lstat("alink").symlink?
|
» |
true
|
|
|
uid
|
statfile.uid
-> aFixnum
|
|
Returns the numeric user id of the owner of statfile.
|
File.stat("testfile").uid
|
» |
501
|
|
|
writable?
|
statfile.writable?
-> true or false
|
|
Returns true if statfile is writable by the effective
user id of this process.
|
File.stat("testfile").writable?
|
» |
true
|
|
|
writable_real?
|
statfile.writable_real?
-> true or false
|
|
Returns true if statfile is writable by the real
user id of this process.
|
File.stat("testfile").writable_real?
|
» |
true
|
|
|
zero?
|
statfile.zero?
-> true or false
|
|
Returns true if statfile is a zero-length file; false
otherwise.
|
File.stat("testfile").zero?
|
» |
false
|
|
Extracted from the book "Programming Ruby -
The Pragmatic Programmer's Guide"
Copyright
©
2001 by Addison Wesley Longman, Inc. This material may
be distributed only subject to the terms and conditions set forth in
the Open Publication License, v1.0 or later (the latest version is
presently available at
http://www.opencontent.org/openpub/)).
Distribution of substantively modified versions of this document is
prohibited without the explicit permission of the copyright holder.
Distribution of the work or derivative of the work in any standard
(paper) book form is prohibited unless prior permission is obtained
from the copyright holder.