modul File::Constants

Modul File::Constants definiert dateibezogene Konstanten.

Es gibt zwei Familien von Konstanten hier

Dateikonstanten, die für den lokalen Prozess definiert sind, können mit der Methode File::Constants.constants abgerufen werden

File::Constants.constants.take(5)
# => [:RDONLY, :WRONLY, :RDWR, :APPEND, :CREAT]

Dateizugriff

Dateizugriffskonstanten können mit dem optionalen Argument mode in Aufrufen der folgenden Methoden verwendet werden

Lese-/Schreibzugriff

Lese-/Schreibzugriff für einen Stream kann durch eine Dateizugriffskonstante angegeben werden.

Die Konstante kann als Teil eines bitweisen OR anderer solcher Konstanten angegeben werden.

Jede Kombination der Konstanten in diesem Abschnitt kann angegeben werden.

File::RDONLY

Flagge File::RDONLY gibt an, dass der Stream nur zum Lesen geöffnet werden soll

filepath = '/tmp/t.tmp'
f = File.new(filepath, File::RDONLY)
f.write('Foo') # Raises IOError (not opened for writing).

File::WRONLY

Flagge File::WRONLY gibt an, dass der Stream nur zum Schreiben geöffnet werden soll

f = File.new(filepath, File::WRONLY)
f.read # Raises IOError (not opened for reading).

File::RDWR

Flagge File::RDWR gibt an, dass der Stream sowohl zum Lesen als auch zum Schreiben geöffnet werden soll

f = File.new(filepath, File::RDWR)
f.write('Foo') # => 3
f.rewind       # => 0
f.read         # => "Foo"

Dateipositionierung

File::APPEND

Flagge File::APPEND gibt an, dass der Stream im Anhängemodus geöffnet werden soll.

Vor jeder Schreiboperation wird die Position auf das Ende des Streams gesetzt. Die Änderung der Position und die nachfolgende Schreiboperation werden als einzelner atomarer Schritt ausgeführt.

File::TRUNC

Flagge File::TRUNC gibt an, dass der Stream am Anfang gekürzt werden soll. Wenn die Datei existiert und erfolgreich zum Schreiben geöffnet wurde, wird sie auf Position Null gekürzt; ihre ctime und mtime werden aktualisiert.

Es hat keine Auswirkung auf eine FIFO-Spezialdatei oder ein Terminalgerät. Die Auswirkung auf andere Dateitypen ist implementierungsabhängig. Das Ergebnis der Verwendung von File::TRUNC mit File::RDONLY ist undefiniert.

Erstellen und Beibehalten

File::CREAT

Flagge File::CREAT gibt an, dass der Stream erstellt werden soll, wenn er noch nicht existiert.

Wenn die Datei existiert

- Raise an exception if File::EXCL is also specified.
- Otherwise, do nothing.

Wenn die Datei nicht existiert, wird sie erstellt. Bei erfolgreichem Abschluss werden atime, ctime und mtime der Datei aktualisiert, und ctime und mtime des übergeordneten Verzeichnisses werden aktualisiert.

File::EXCL

Flagge File::EXCL gibt an, dass der Stream noch nicht existieren darf; Wenn die Flags File::CREAT und File::EXCL beide angegeben sind und der Stream bereits existiert, wird eine Ausnahme ausgelöst.

Die Prüfung auf Existenz und Erstellung der Datei wird als atomarer Vorgang durchgeführt.

Wenn sowohl File::EXCL als auch File::CREAT angegeben sind und der Pfad auf einen symbolischen Link zeigt, wird unabhängig vom Inhalt des symbolischen Links eine Ausnahme ausgelöst.

Wenn File::EXCL angegeben ist und File::CREAT nicht angegeben ist, ist das Ergebnis undefiniert.

POSIX-Dateikonstanten

Einige Dateizugriffskonstanten sind nur auf POSIX-konformen Systemen definiert; diese sind

File::SYNC, File::RSYNC und File::DSYNC

Flagge File::SYNC, File::RSYNC oder File::DSYNC gibt die Synchronisierung von E/A-Operationen mit dem zugrunde liegenden Dateisystem an.

Diese Flags sind nur für POSIX-konforme Systeme gültig.

Beachten Sie, dass das Verhalten dieser Flags je nach Betriebssystem und Dateisystem leicht variieren kann. Darüber hinaus können die Verwendung dieser Flags aufgrund der synchronen Natur der E/A-Vorgänge Auswirkungen auf die Leistung haben, daher sollten sie mit Bedacht eingesetzt werden, insbesondere in leistungskritischen Anwendungen.

File::NOCTTY

Flagge File::NOCTTY gibt an, dass das Gerät, wenn es sich um ein Terminalgerät handelt, nicht zum steuernden Terminal des Prozesses wird.

Nur für POSIX-konforme Systeme definiert.

File::DIRECT

Flagge File::DIRECT fordert an, dass die Cache-Effekte der E/A von und zu dem Stream minimiert werden.

Nur für POSIX-konforme Systeme definiert.

File::NOATIME

Flagge File::NOATIME gibt an, dass der Vorgang des Öffnens des Streams seinen Zugriffszeitstempel (atime) nicht ändern soll.

Nur für POSIX-konforme Systeme definiert.

File::NOFOLLOW

Flagge File::NOFOLLOW gibt an, dass ein symbolischer Link nicht verfolgt werden soll, wenn der Pfad ein symbolischer Link ist.

Nur für POSIX-konforme Systeme definiert.

File::TMPFILE

Flagge File::TMPFILE gibt an, dass der geöffnete Stream eine neue temporäre Datei sein soll.

Nur für POSIX-konforme Systeme definiert.

Andere Dateizugriffskonstanten

File::NONBLOCK

Wenn möglich, wird die Datei im nichtblockierenden Modus geöffnet. Weder die Öffnungsoperation noch nachfolgende E/A-Operationen auf der Datei veranlassen den aufrufenden Prozess zum Warten.

File::BINARY

Flagge File::BINARY gibt an, dass der Stream im Binärmodus zugegriffen werden soll.

File::SHARE_DELETE

Flagge File::SHARE_DELETE ermöglicht es anderen Prozessen, den Stream mit Löschzugriff zu öffnen.

Nur Windows.

Wenn der Stream für (lokalen) Löschzugriff ohne File::SHARE_DELETE geöffnet wird und ein anderer Prozess versucht, ihn mit Löschzugriff zu öffnen, schlägt der Versuch fehl und der Stream wird für diesen Prozess nicht geöffnet.

Sperren

Vier Dateikonstanten beziehen sich auf Stream-Sperren; siehe File#flock

File::LOCK_EX

Flagge File::LOCK_EX gibt eine exklusive Sperre an; nur ein Prozess kann den Stream gleichzeitig sperren.

File::LOCK_NB

Flagge File::LOCK_NB gibt eine nichtblockierende Sperre für den Stream an; kann mit File::LOCK_EX oder File::LOCK_SH kombiniert werden.

File::LOCK_SH

Flagge File::LOCK_SH gibt an, dass mehrere Prozesse den Stream gleichzeitig sperren können.

File::LOCK_UN

Flagge File::LOCK_UN gibt an, dass der Stream nicht gesperrt werden soll.

Dateinamenmusterabgleich-Konstanten (File::FNM_*)

Dateinamenmusterabgleich-Konstanten können mit dem optionalen Argument flags in Aufrufen der folgenden Methoden verwendet werden

Die Konstanten sind

File::FNM_CASEFOLD

Flagge File::FNM_CASEFOLD macht Muster für File.fnmatch unempfindlich gegen Groß-/Kleinschreibung (aber nicht für Dir.glob).

File::FNM_DOTMATCH

Flagge File::FNM_DOTMATCH lässt das Muster '*' mit einem Dateinamen übereinstimmen, der mit '.' beginnt.

File::FNM_EXTGLOB

Flagge File::FNM_EXTGLOB aktiviert das Muster '{a,b}', das mit Muster ‘a’ und Muster ‘b’ übereinstimmt; verhält sich wie eine Regexp-Vereinigung (z. B. '(?:a|b)')

pattern = '{LEGAL,BSDL}'
Dir.glob(pattern)      # => ["LEGAL", "BSDL"]
Pathname.glob(pattern) # => [#<Pathname:LEGAL>, #<Pathname:BSDL>]
pathname.glob(pattern) # => [#<Pathname:LEGAL>, #<Pathname:BSDL>]

File::FNM_NOESCAPE

Flagge File::FNM_NOESCAPE deaktiviert die Escapesequenz '\'.

File::FNM_PATHNAME

Flagge File::FNM_PATHNAME gibt an, dass die Muster '*' und '?' nicht mit dem Verzeichnistrennzeichen (dem Wert der Konstante File::SEPARATOR) übereinstimmen.

File::FNM_SHORTNAME

Flagge File::FNM_SHORTNAME ermöglicht es Mustern, kurze Namen abzugleichen, wenn diese existieren.

Nur Windows.

File::FNM_SYSCASE

Flagge File::FNM_SYSCASE gibt an, dass die Groß-/Kleinschreibung der des zugrunde liegenden Betriebssystems entspricht; effektiv für File.fnmatch, aber nicht für Dir.glob.

Andere Konstanten

File::NULL

Flagge File::NULL enthält den Zeichenfolgenwert des Nullgeräts