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.
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:
-
Versteckte Dateien werden gelesen
-
Systemdateien werden gelesen
-
Verzeichnisse werden gelesen
-
Dateiname ist im CONZEPT 16-Zeichensatz angegeben
-
Dateiname ist im UTF-8-Zeichensatz angegeben
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();
}