SY_GetDirFiles

Liefert alle in einem Verzeichnis enthaltenen Dateien in alphabetischer Reihenfolge.

Prototype


SY_GetDirFiles( path )

Parameter


ParameterTypBedeutung
pathstringPfad zu dem Verzeichnis

Rückgabewert


NummerTypBedeutung
1functionIterator-Funktion
2userdataVerzeichnis-Iterator-Objekt

Hinweise


  • In der Regel wird man die Funktion im Rahmen einer generischen for-Schleife aufrufen, man muss sich also um die Rückgabewerte der Funktion nicht direkt kümmern

Beispiel


Einfaches Beispiel: alle Dateien im aktuellen Verzeichnis durchlaufen und im Protokoll ausgeben:

-- alle Dateien/Verzeichnisse im aktuellen Verzeichnis in's Protokoll ausgeben
for file in SY_GetDirFiles( "." ) do
	SY_Proto( file )
end

Das zweite Beispiel zeigt, wie mit Hilfe der Funktion SY_GetDirFiles eine komplexe Suchfunktion realisiert werden kann:

-- die Funktion ermittelt rekursiv die ersten 'limit' Orte,
-- an denen die Datei 'filename' unterhalb des Pfades 'path' liegt,
-- und liefert als Ergebnis die vollständigen Pfade
-- in einem table zurück
local function search_file( path, filename, limit, result )
	local result = result or {}
	local limit = limit or math.huge
	for file in SY_GetDirFiles( path ) do
		if #result >= limit then break end
		if file ~= "." and file ~= ".." then
			local filepath = path .. "\\" .. file
			local mode = SY_FileInfo( filepath, "mode" )
			if mode == "directory" then
				search_file( filepath, filename, limit, result )
			elseif mode == "file" then
				if file == filename then
					result[#result+1] = filepath
				end
			else
				error( "unknown mode - " .. tostring( mode ) )
			end
		end
	end

	return result
end

-- suchen nach der Datei aufform.rpt unterhalb vom Syslog-Verzeichnis
local path = os.getenv( "PRIMUSDIR" )
local files = search_file( path, "aufform.rpt" )

-- Pfade zu den gefundenen Dateien ausgeben
for nr, file in ipairs( files ) do
	SY_Proto( nr .. ". Fundort: " .. file )
end