Zum Hauptinhalt springen

FsiDirOpen

Mit dieser Funktion wird ein Verzeichnis zum Lesen geöffnet. Anschließend können mit dem Befehl ``FsiDirRead() die Verzeichniseinträge gelesen werden. Ist der Dateiname/-pfad (alpha1) leer, können alle Einträge des aktuellen Verzeichnisses gelesen werden. Beim Lesen der Verzeichniseinträge ist es ebenfalls möglich in (alpha1) auch gleich eine Dateimaske zur Filterung der Einträge mit anzugeben.

info

Existiert das Verzeichnis nicht, wird trotzdem ein gültiger Desktriptor zurückgegeben. Die Existenz eines Verzeichnisses kann mit der Funktion ``FsiAttributes() geprüft werden.

Folgende Optionen (int2) sind zulässig:

Beispiel:

// Lesen aller .dat-Dateien im aktuellen Verzeichnis
tDirHdl # FsiDirOpen('*.dat', _FsiAttrHidden);
tName # tDirHdl->FsiDirRead(); // erste Datei

while (tName != '')
{
tSize # tDirHdl->FsiSize(); // Dateigröße
...
tName # tDirHdl->FsiDirRead();
}

tDirHdl->FsiDirClose();
// Liste aller Dateien eines Verzeichnisses erstellen
sub WriteFileList
(
aPath : alpha(4096);
)

local
{
tHdlDir : handle;
tName : alpha(4096);
tFile : handle;
tTestFile : handle;
}

{
tHdlDir # FsiDirOpen(aPath + '\*.txt', _FsiNameUtf8);
tFile # FsiOpen(aPath + '\files.txt', _FsiStdWrite | _FsiPure);

tName # tHdlDir->FsiDirRead();

while (tName != '')
{
tTestFile # FsiOpen(aPath + '\' + tName, _FsiStdRead | _FsiNameUtf8);

if (tTestFile > 0)
{
tName # tName + ' -> Open OK';
tTestFile->FsiClose();
}
else
tName # tName + ' -> Open FAIL';

tFile->FsiWrite(tName);
tFile->FsiWrite(StrChar(13) + StrChar(10));

tName # tHdlDir->FsiDirRead();
}

tHdlDir->FsiDirClose();
tFile->FsiClose();
}