modul File::Constants
Modul File::Constants definiert dateibezogene Konstanten.
Es gibt zwei Familien von Konstanten hier
-
Diejenigen, die sich mit Dateizugriff befassen.
-
Diejenigen, die sich mit Dateinamensmusterabgleich befassen.
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::DSYNC.
-
File::RSYNC.
-
File::DIRECT.
-
File::NOATIME.
-
File::NOCTTY.
-
File::NOFOLLOW.
-
File::TMPFILE.
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.
-
File::SYNC gibt an, dass alle Schreibvorgänge (sowohl Daten als auch Metadaten) sofort auf das zugrunde liegende Speichergerät geleert werden. Das bedeutet, dass die Daten auf das Speichergerät geschrieben werden und die Metadaten der Datei (z. B. Dateigröße, Zeitstempel, Berechtigungen) ebenfalls synchronisiert werden. Dies garantiert, dass die Daten sicher auf dem Speichermedium gespeichert werden, bevor die Kontrolle an das aufrufende Programm zurückgegeben wird. Dieses Flag kann erhebliche Auswirkungen auf die Leistung haben, da es synchrone Schreibvorgänge erfordert, die langsamer sein können als asynchrone Schreibvorgänge.
-
File::RSYNC gibt an, dass Lesevorgänge auf der Datei nicht zurückgegeben werden, bis alle ausstehenden Schreibvorgänge (die ausgegeben, aber noch nicht abgeschlossen wurden) ebenfalls synchronisiert sind. Dies ist nützlich, wenn Sie die aktuellsten Daten lesen möchten, die möglicherweise noch im Prozess des Schreibens sind.
-
File::DSYNC gibt an, dass alle Daten-Schreibvorgänge sofort auf das zugrunde liegende Speichergerät geleert werden; dies unterscheidet sich von File::SYNC, das erfordert, dass auch Metadaten synchronisiert werden.
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
-
Auf einem Unix-ähnlichen Betriebssystem
'/dev/null'. -
Unter Windows
'NUL'.
Constants
- APPEND
- BINARY
- CREAT
- DIRECT
- DSYNC
- EXCL
- FNM_CASEFOLD
- FNM_DOTMATCH
- FNM_EXTGLOB
- FNM_NOESCAPE
- FNM_PATHNAME
- FNM_SHORTNAME
- FNM_SYSCASE
- LOCK_EX
- LOCK_NB
- LOCK_SH
- LOCK_UN
- NOATIME
- NOCTTY
- NOFOLLOW
- NONBLOCK
- NULL
- RDONLY
- RDWR
- RSYNC
- SHARE_DELETE
- SYNC
- TMPFILE
- TRUNC
- WRONLY