Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
(
stat
folgt symbolischen Links;
lstat
liefert Informationen über den Link selbst zurück.) Diese Methoden geben ein Objekt vom Typ
File::Stat
zurück, das Instanzmethoden mit den gleichen Namen (aber ohne Argumente) wie die Klassenmethoden von
File
besitzt. Der Vorteil bei der Verwendung von
stat
ist, dass Ruby nur einmal das Betriebssystem anrufen muss, um alle Metadaten zu erhalten. Ihr Ruby-Programm kann dann diese Informationen aus dem
File::Stat
-Objekt nach Bedarf auslesen:
s = File.stat("/usr/bin/ruby")
s.file? # => true
s.directory? # => false
s.ftype # => "file"
s.readable? # => true
s.writable? # => false
s.executable? # => true
s.size # => 5492
s.atime # => Mon Jul 23 13:20:37 −0700 2007
    Nutzen Sie ri für
File::Stat
, um eine vollständige Liste der Methoden zu erhalten. Eine letzte allgemeine Methode zum Prüfen von Dateien ist
Kernel.test
. Sie existiert aus historischen Kompatibilitätsgründen zum Unix-Shell-Befehl test . Die Methode
test
ist zum größten Teil durch die Klassenmethoden der Klasse
File
überflüssig geworden, aber Sie werden Sie noch hier und da in bestehenden Ruby-Skripten finden. Mit ri erhalten Sie alle Details:
# Einzelne Dateien prüfen
test ?e, "/usr/bin/ruby" # File.exist?("/usr/bin/ruby")
test ?f, "/usr/bin/ruby" # File.file?("/usr/bin/ruby")
test ?d, "/usr/bin/ruby" # File.directory?("/usr/bin/ruby")
test ?r, "/usr/bin/ruby" # File.readable?("/usr/bin/ruby")
test ?w, "/usr/bin/ruby" # File.writeable?("/usr/bin/ruby")
test ?M, "/usr/bin/ruby" # File.mtime("/usr/bin/ruby")
test ?s, "/usr/bin/ruby" # File.size?("/usr/bin/ruby")

# Vergleich zweier Dateien f und g
test ?-, f, g # File.identical(f,g)
test ?<, f, g # File(f).mtime < File(g).mtime
test ?>, f, g # File(f).mtime > File(g).mtime
test ?=, f, g # File(f).mtime == File(g).mtime
    9.6.4 Erzeugen, Löschen und Umbenennen von Dateien und Verzeichnissen
    Die Klasse
File
definiert keine speziellen Methoden für das Erzeugen einer Datei. Um das zu erreichen, öffnen Sie die Datei einfach zum Schreiben, fügen null oder mehr Byte ein und schließen Sie wieder. Wenn Sie eine bestehende Datei nicht zerstören wollen, öffnen Sie sie im Append-Modus:
# Erzeuge (oder überschreibe) eine Datei namens "test"
File.open("test", "w") {}
# Erzeuge (aber überschreibe nicht) eine Datei namens "test"
File.open("test", "a") {}
    Um den Namen einer Datei zu ändern, verwenden Sie
File.rename
:
File.rename("test", "test.old") # Alter Name, dann neuer Name
    Um einen symbolischen Link für eine Datei anzulegen nutzen Sie
File.symlink
:
File.symlink("test.old", "oldtest") # Linkziel, Linkname
    Auf Systemen, die das unterstützen, können Sie einen »harten Link« mit
File.link
erzeugen:
File.link("test.old", "test2") # Linkziel, Linkname
    Um schließlich eine Datei oder einen Link zu löschen, verwenden Sie
File.delete
oder sein Synonym
File.unlink
:
File.delete("test2") # Kann auch mit mehreren Argumenten aufgerufen werden,
File.unlink("oldtest") # um mehrere Dateien zu löschen
    Auf Systemen, die das unterstützen, verwenden Sie
File.truncate
, um eine Datei auf eine bestimmte Menge an Bytes (eventuell auch null) zu reduzieren. Mit
File.utime
setzen Sie die Zugriffs- und Änderungszeiten einer Datei. Und mit der plattformabhängigen Methode
File.chmod
ändern Sie die Berechtigungen einer Datei:
f = "log.messages" # Dateiname
atime = mtime = Time.now # Neue Zugriffs- und Änderungszeiten
File.truncate(f, 0) # Lösche alle bestehenden Inhalte
File.utime(atime, mtime, f) # Ändere Zeiten
File.chmod(0600, f) # Unix-Berechtigungen -rw-------; beachte das oktale
     # Argument
    Um ein neues Verzeichnis zu erstellen, nutzen Sie
Dir.mkdir
. Um ein Verzeichnis zu löschen, greifen Sie auf
Dir.rmdir
oder eines der beiden Synonyme
Dir.delete
oder
Dir.unlink
zu. Das Verzeichnis muss leer sein, bevor man es löschen kann:
Dir.mkdir("temp") # Erstelle ein Verzeichnis
File.open("temp/f", "w") {} # Erzeuge eine Datei darin
File.open("temp/g", "w") {} # Erzeuge eine weitere
File.delete(*Dir["temp/*"]) # Lösche alle Dateien im Verzeichnis
Dir.rmdir("temp") # Lösche das Verzeichnis

9.7 Ein-/Ausgabe
    Ein
IO
-Objekt ist ein Stream: eine auslesbare Quelle mit Bytes oder Zeichen oder eine beschreibbare Senke für Bytes oder Zeichen. Die Klasse
File
ist eine Unterklasse von
IO
.
IO
-Objekte dienen auch als »Standardeingabestream« und »Standardausgabestream«, die genutzt werden, um von der Konsole zu lesen und an ihr auszugeben. Das Modul
stringio
in der

Weitere Kostenlose Bücher