tk: PHP: Verzeichnis rekursiv löschen (neue Version, Diskussion)

Beitrag lesen

Moin,

Gesagt:

Einen Parameter oder eine Methode zum Sortieren hab ich nicht gefunden, die müsste geschrieben werden

Getan: […]

das geht auch einfacher: RecursiveIteratorIterator und RecursiveDirectoryIterator kennen ganz nützliche Flags als zweiten Parameter im Konstruktor. Wenn man über dein mit exec angelegtes Testverzeichnis den Code:

new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator(
        '/tmp/a',
        FilesystemIterator::SKIP_DOTS
    ),
    RecursiveIteratorIterator::CHILD_FIRST
);

laufen lässt, bekommt man als Ausgabe von getPathname() diese Liste der Verzeichnisse und Dateien:

0: /tmp/a/b/b
1: /tmp/a/b/c
2: /tmp/a/b/a
3: /tmp/a/b
4: /tmp/a/c
5: /tmp/a/a/a a
6: /tmp/a/a/.a
7: /tmp/a/a/a
8: /tmp/a/a

Die Einträge sind dann gleich so sortiert dass man jeden Eintrag einfach löschen kann, wenn man zum Elternverzeichnis kommt, ist dieses bereits leer – nur /tmp/a selbst bleibt dann noch übrig.

Gruß
Tobias