Programmierung in Ruby

Der Leitfaden der Pragmatischen Programmierer

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?


Objekte der Klasse File::Stat kapseln allgemeine Statusinformationen für File-Objekte. Die Information wird in dem Moment abgegriffen, in dem ein File::Stat-Objekt erzeugt wird. Alle Änderungen an der Datei, die nach diesem Zeitpunkt wirksam werden, sind nicht enthalten. File::Stat-Objekte werden von IO#stat, File.stat, File#lstat und File.lstat zurück gegeben. Viele dieser Methoden geben Plattform-spezifische Werte zurück, so dass nicht alle Werte auf jeder Plattform sinnvoll sind. Siehe auch Kernel#test weiter unten in diesem Abschnitt.
mixins
Comparable: <, <=, ==, >=, >, between?

instance methods
<=> statfile <=> einAndererStat-> -1, 0, 1

Vergleicht File::Stat-Objekte durch einen Vergleich ihrer jeweiligen Änderungszeitpunkte.

f1 = File.new("f1", "w")
sleep 1
f2 = File.new("f2", "w")
f1.stat <=> f2.stat » -1

atime statfile.atime -> eineZeit

Gibt den Zeitpunkt des letzten Dateizugriffs in einem Time-Objekt zurück (access time engl. Zugriffszeit, d.Red.).

File.stat("testfile").atime » Wed Dec 31 18:00:00 CST 1969

blksize statfile.blksize -> einInteger

Gibt die Blockgröße des Datei im zugrundeliegenden Dateisystem zurück. Die Methode gibt 0 zurück, wenn diese Funktion im jeweiligen Dateisystem nicht unterstützt wird.

File.stat("testfile").blksize » 4096

blockdev? statfile.blockdev? -> true oder false

Gibt true zurück, wenn die Datei ein sog. "block device", also eine Hardwarekomponente, ist bzw. false falls nicht. Es wird auch false zurückgegeben, wenn das Dateisystem diese Auskunft nicht unterstützt.

File.stat("testfile").blockdev? » false

blocks statfile.blocks -> einInteger

Gibt die Anzahl der belegten Blocks im zugrunde liegenden Dateisystem zurück, die diese Datei belegt. Es wird 0 zurück gegeben, wenn das Dateisystem diese Funktion nicht unterstützt. Returns the number of native file system blocks allocated for

File.stat("testfile").blocks » 2

chardev? statfile.chardev? -> true oder false

Gibt true zurück, wenn die Datei ein sog. "character device", also ein Textausgabegerät, ist bzw. false falls nicht. Falls das Dateisystem diese Funktion nicht unterstützt, wird 0 zurückgegeben.

File.stat("/dev/tty").chardev? » true

ctime statfile.ctime -> eineZeit

Gibt den Zeitpunkt der letzten Dateiänderung für statfile zurück, also den Zeitpunkt, an dem die Verzeichnisinformation über die Datei geändert wurde, nicht die Datei selbst.

File.stat("testfile").ctime » Sun Mar 04 23:28:25 CST 2001

dev statfile.dev -> eineFixnum

Gibt eine Ganzzahl zurück, die dem Laufwerk zugeordnet ist, auf dem statfile liegt.

File.stat("testfile").dev » 774

directory? statfile.directory? -> true oder false

Gibt true zurück, wenn statfile ein Verzeichnis ist, sonst wird false zurückgegeben.

File.stat("testfile").directory? » false
File.stat(".").directory? » true

executable? statfile.executable? -> true oder false

Gibt true zurück, wenn statfile ausführbar ist bzw. auch wenn das Dateisystem zwischen ausführbaren und nicht-ausführbaren Dateien nicht unterscheidet. Für die Tests werden die Eigentümerrechte des Prozesses berücksichtigt.

File.stat("testfile").executable? » false

executable_real? statfile.executable_real? -> true oder false

Dasselbe wie executable?, jedoch werden bei den Tests die realen Eigentümerrechte zugrunde gelegt.

file? statfile.file? -> true oder false

Gibt true zurück, wenn statfile eine reguläre Datei ist (und nicht ein Gerät, eine Pipe, ein Socket, o.ä.).

File.stat("testfile").file? » true

ftype statfile.ftype -> fileType

Ermittelt den Typ von statfile. Der zurückgegebene String entspricht einem der Folgenden: ``file'', ``directory'', ``characterSpecial'', ``blockSpecial'', ``fifo'', ``link'' oder ``socket''.

File.stat("/dev/tty").ftype » "characterSpecial"

gid statfile.gid -> eineFixnum

Gibt die numerische Gruppen-ID des Eigentümers von statfile zurück.

File.stat("testfile").gid » 500

grpowned? statfile.grpowned? -> true oder false

Gibt true zurück, wenn die Gruppenzugehörigkeit des Prozesses derjenigen von statfile entspricht. Die Methode gibt unter Windows NT false zurück.

File.stat("testfile").grpowned? » true
File.stat("/etc/passwd").grpowned? » false

ino statfile.ino -> eineFixnum

Gibt die inode-Zahl für statfile zurück.

File.stat("testfile").ino » 43331

mode statfile.mode -> eineFixnum

Gibt die "permission bits" von statfile als einen Ganzzahlwert zurück. Die Bedeutung der Bits ist Plattform-abhängig; unter Unix siehe auch stat(2).

File.chmod(0644, "testfile") » 1
s = File.stat("testfile")
sprintf("%o", s.mode) » "100644"

mtime statfile.mtime -> eineZeit

Gibt den Zeitpunkt der Modifikation von statfile zurück (modification time, engl. für Modifikationszeit, d.Red.).

File.stat("testfile").mtime » Sun Mar 04 23:28:25 CST 2001

nlink statfile.nlink -> eineFixnum

Gibt die Anzahl von harten Links auf statfile zurück.

File.stat("testfile").nlink » 1
File.link("testfile", "testfile.bak") » 0
File.stat("testfile").nlink » 2

owned? statfile.owned? -> true oder false

Gibt true zurück, wenn die User-Id des Prozesseigentümers dieselbe ist wie diejenige des Eigentümers von statfile.

File.stat("testfile").owned? » true
File.stat("/etc/passwd").owned? » false

pipe? statfile.pipe? -> true oder false

Gibt true zurück, wenn das Betriebssystem Pipes unterstützt und wenn statfile auch eine Pipe ist; anderenfalls wird false zurückgegeben.

rdev statfile.rdev -> eineFixnum

Gibt eine Ganzzahl zurück, die den Gerätetyp identifiziert, auf dem statfile liegt. Gibt 0 zurück, wenn das Betreibssystem diese Option nicht unterstützt.

File.stat("/dev/fd0").rdev » 512

readable? statfile.readable? -> true oder false

Gibt true zurück, wenn statfile mit der Prozess-User-Id lesbar ist.

File.stat("testfile").readable? » true

readable_real? statfile.readable_real? -> true oder false

Gibt true zurück, wenn statfile mit der User-Id des Prozess-Eigentümers übereinstimmt.

File.stat("testfile").readable_real? » true

setgid? statfile.setgid? -> true oder false

Gibt true zurück, wenn bei statfile das permission bit zum Setzen der Gruppen-Id gesetzt ist. Es wird false zurückgegeben, wenn das Bit nicht gesetzt ist bzw. das Betriebssystem diese Funktion nicht unterstützt.

File.stat("/usr/sbin/lpc").setgid? » true

setuid? statfile.setuid? -> true oder false

Gibt true zurück, wenn bei statfile das permission bit zum Setzen der User-Id gesetzt ist. Es wird false zurückgegeben, wenn das Bit nicht gesetzt ist bzw. das Betriebssystem diese Funktion nicht unterstützt.

File.stat("/bin/su").setuid? » true

size statfile.size -> eineFixnum

Gibt die Größe von statfile in Bytes zurück.

File.stat("testfile").size » 66

size? statfile.size? -> eineFixnum oder nil

Gibt nil zurück, wenn statfile eine Datei mit Länge Null ist. Anderenfalls wird die Dateigröße in Bytes zurückgegeben.

File.stat("testfile").size? » 66

socket? statfile.socket? -> true oder false

Gibt true zurück, wenn statfile ein Socket ist. Es wird false zurückgegeben, falls nicht bzw. falls das Betriebssystem diese Funktion nicht unterstützt.

File.stat("testfile").socket? » false

sticky? statfile.sticky? -> true oder false

Gibt true zurück, falls bei statfile das sog. sticky bit gesetzt ist. Anderenfalls wird false zurückgegeben. Ebenso wenn das Betriebssystem diese Option nicht unterstützt.

File.stat("testfile").sticky? » false

symlink? statfile.symlink? -> true oder false

Gibt true zurück, wenn statfile einen symbolischen Link repräsentiert. Es wird anderenfalls false zurückgegeben. Ebenso wird false zurück gegeben, wenn die Option auf dem Betriebssystem nicht zur Verfügung steht. Wie File.stat folgt die Methode symbolischen Links automatisch; symlink? gibt für ein Objekt, das durch File.stat übergeben wird immer false zurück.

File.symlink("testfile", "alink") » 0
File.stat("alink").symlink? » false
File.lstat("alink").symlink? » true

uid statfile.uid -> eineFixnum

Gibt die numerische UserId des Besitzers von statfile zurück.

File.stat("testfile").uid » 501

writable? statfile.writable? -> true oder false

Gibt true zurück, wenn der Prozessbesitzer auf statfile Schreibrechte besitzt.

File.stat("testfile").writable? » true

writable_real? statfile.writable_real? -> true oder false

Gibt true zurück, wenn der Prozess auf statfile Schreibrechte besitzt.

File.stat("testfile").writable_real? » true

zero? statfile.zero? -> true or false

Gibt true zurück, wenn statfile die Länge Null hat; anderenfalls wird false zurückgegeben.

File.stat("testfile").zero? » false


Extracted from the book "Programming Ruby - The Pragmatic Programmer's Guide"
Übersetzung: Carsten Schinzer
Für das englische Original:
© 2000 Addison Wesley Longman, Inc. Released under the terms of the Open Publication License V1.0. That reference is available for download.
Diese Lizenz sowie das Original vom Herbst 2001 bilden die Grundlage der Übersetzung
Es wird darauf hingewiesen, dass sich die Lizenz des englischen Originals inzwischen geändert hat.
Für die deutsche Übersetzung:
© 2002 Jürgen Katins
Der Copyright-Eigner stellt folgende Lizenzen zur Verfügung:
Nicht-freie Lizenz:
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.
Freie Lizenz:
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".