SY_FileInfo

Liest Informationen zu einer Datei aus.

Prototype


SY_FileInfo( path, [attribut] )

Parameter


ParameterTypBedeutung
pathstringPfad zu der Datei oder dem Verzeichnis, zu der/dem Informationen ausgelesen werden sollen.
attributstringoptional; nicht alle Attribute zur Datei ermitteln, sondern nur das übergebene

Rückgabewert


NummerTypBedeutung
1tabletable mit den Attributen

Attribute


AttributTypBedeutung
modestring"file", wenn es sich um eine reguläre Datei handelt, "directory" bei Verzeichnissen, "char device" bei zeichenorientierten Geräten, sonst "other"
devnumberDie Nummer des Laufwerks, das die Datei enthält
inonumberunter Windows ohne Bedeutung
nlinknumberDie Anzahl harter Links auf die Datei
uidnumberunter Windows ohne Bedeutung
gidnumberunter Windows ohne Bedeutung
rdevnumberunter Windows die selbe Information wie beim Attribut "dev"
atimenumberZeitstempel des letzten Zugriffs auf die Datei
mtimenumberZeitstempel der letzten Datenänderung
ctimenumberZeitstempel der letzten Statusänderung (z.B. Dateiname geändert, Berechtigungen, ... )
sizenumberDateigröß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." )