Rolf B: Verzeichnis leeren

Beitrag lesen

Hallo Bastian,

ich weiß nicht, ob Du es versehentlich richtig gemacht hast oder ob Du das so überlegt hast, aber ich möchte auf diesen Punkt hinweisen.

scandir liest das Verzeichnis in ein Array ein. Die foreach-Schleife verarbeitet dann das Array. D.h. wenn die unlink Aufrufe laufen, wird das Verzeichnis nicht gleichzeitig von Dir gelesen.

Es gibt alternativ auch readdir. Damit liest man das Verzeichnis Datei für Datei - und hier würde die Gefahr eines Konflikts bestehen, wenn man in der Schleife löscht. Es könnte dann passieren, dass der Lesezugriff auf das Verzeichnis durch die Löschungen durcheinander kommt und man Dateien überspringt.

Da das Verhalten von readdir je nach OS und Filesystem anders sein kann, sind das schwer testbare Szenarien. Deswegen: scandir ist hier genau richtig.

Oder glob, wenn ein Suchmuster gebraucht wird.

Rolf

--
sumpsi - posui - obstruxi