# Programming Ruby ### The Pragmatic Programmer's Guide
Previous < | Contents ^ | Next >

class File::Stat |
Parent: | Object
Version: | 1.6

### Index:

<=> atime blksize blockdev? blocks chardev? ctime dev directory? executable? executable_real? file? ftype gid grpowned? ino mode mtime nlink owned? pipe? rdev readable? readable_real? setgid? setuid? size size? socket? sticky? symlink? uid writable? writable_real? zero?

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.

mixins
Comparable: | <, <=, ==, >=, >, between?

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`

Previous < | Contents ^ | Next >

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.