SY_FileInfo
lk
Owned by lk
Liest Informationen zu einer Datei aus.
Prototype
SY_FileInfo( path, [attribut] )
Parameter
Parameter | Typ | Bedeutung |
---|---|---|
path | string | Pfad zu der Datei oder dem Verzeichnis, zu der/dem Informationen ausgelesen werden sollen. |
attribut | string | optional; nicht alle Attribute zur Datei ermitteln, sondern nur das übergebene |
Rückgabewert
Nummer | Typ | Bedeutung |
---|---|---|
1 | table | table mit den Attributen |
Attribute
Attribut | Typ | Bedeutung |
---|---|---|
mode | string | "file", wenn es sich um eine reguläre Datei handelt, "directory" bei Verzeichnissen, "char device" bei zeichenorientierten Geräten, sonst "other" |
dev | number | Die Nummer des Laufwerks, das die Datei enthält |
ino | number | unter Windows ohne Bedeutung |
nlink | number | Die Anzahl harter Links auf die Datei |
uid | number | unter Windows ohne Bedeutung |
gid | number | unter Windows ohne Bedeutung |
rdev | number | unter Windows die selbe Information wie beim Attribut "dev" |
atime | number | Zeitstempel des letzten Zugriffs auf die Datei |
mtime | number | Zeitstempel der letzten Datenänderung |
ctime | number | Zeitstempel der letzten Statusänderung (z.B. Dateiname geändert, Berechtigungen, ... ) |
size | number | Dateigröße in Bytes |
Hinweise
- Will man nur ein Attribut ermitteln, kann man dieses als Zeichenkette der Funtkion als zweiten Parameter übergeben. Die Funktion gibt dann den ermittelten Wert direkt zurück, also nicht als table!
- Die Zeitstempel der Attribute atime, ctime und mtime sind in Systemsekunden (Anzahl Sekunden seit dem 01.01.1970, 00:00 Uhr) angegeben und können mit der eingebauten Lua-Funktion
os.date
in ein menschenlesbares Format umgewandelt werden (siehe auch zweites Beispiel). - Übergibt man einen ungültigen Pfad, bekommt man als Rückgabewert
nil
und eine entsprechende Fehlermeldung.
Beispiel
Zunächst ein einfaches Beispiel: Das aktuelle Home-Verzeichnis wird ermittelt, dann wird das Attribut "mode" in's Protokoll ausgegeben:
-- Pfad zum Home-Verzeichnis aus Umgebungsvariable auslesen local path = os.getenv( "HOMEPATH" ) -- Informationen zum Pfad auslesen und ins Protokoll ausgeben local info = SY_FileInfo( path ) SY_Proto( info.mode ) --> directory -- identisches Ergebnis: SY_Proto( SY_FileInfo( path, "mode" ) ) SY_Proto( SY_FileInfo( path ).mode ) ) -- sicherer: mögliche Fehler abfangen: local info = assert( SY_fileInfo( path ) ) SY_Proto( info.mode )
Das zweite Beispiel zeigt, wie die Zeitangabe (aus den Attributen atime, ctime und mtime) sinnvoll verarbeitet werden kann. Zudem wird ermittelt, seit wievielen Tagen sich die Datei nicht mehr geändert hat:
local path = "C:\\autoexec.bat" -- Informationen auslesen local info = assert( SY_FileInfo( path ) ) -- Änderungszeit ausgeben im Format 'DD.MM.JJJJ, HH:MM:SS Uhr' local mtime = os.date( "%d.%m.%Y, %H:%M:%S Uhr", info.mtime ) SY_Proto( "Die Datei '" .. path .. "' wurde zuletzt geändert am " .. mtime ) -- Alter in Sekunden ermitteln local diff = os.time() - info.mtime -- umrechnen in Tage und runden, ausgeben local diff_tage = de.syslog.math.round( diff/60/60/24, 0 ) SY_Proto( "Die Datei wurde seit " .. diff_tage .. " Tagen nicht mehr geändert." )