FsiDirOpen
FsiDirOpen(alpha1, int2) : handle
Verzeichnis öffnen
Details
- alpha1: Dateiname/-pfad
- int2:
- Resultat:
handleVerzeichnis-Deskriptor - Siehe: Verwandte Befehle ,
FsiDirClose (),FsiDirRead (),FsiAttributes (), Fehlerwerte
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:
_FsiAttrHiddenVersteckte Dateien werden gelesen_FsiAttrSystemSystemdateien werden gelesen_FsiAttrDirVerzeichnisse werden gelesen_FsiNameC16Dateiname ist im CONZEPT 16-Zeichensatz angegeben_FsiNameUtf8Dateiname 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();
}