Verzeichnisse mit Dateien löschen
Ein Verzeichnis zu entfernen ist einfach, aber was passiert, wenn das Verzeichnis Dateien enthält? Die Funktion rmdir() schlägt fehl, wenn sich Dateien im Verzeichnis befinden. Um das Verzeichnis zu löschen, müssen Sie zunächst alle darin enthaltenen Dateien löschen.
Hierfür gibt es mehrere Möglichkeiten. Eine Möglichkeit besteht darin, eine rekursive Funktion zu verwenden, die alle Dateien und Ordner im Verzeichnis löscht, einschließlich aller verschachtelten Verzeichnisse. Hier ist ein Beispiel:
function deleteDir(string $dirPath): void { if (! is_dir($dirPath)) { throw new InvalidArgumentException("$dirPath must be a directory"); } if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') { $dirPath .= '/'; } $files = glob($dirPath . '*', GLOB_MARK); foreach ($files as $file) { if (is_dir($file)) { deleteDir($file); } else { unlink($file); } } rmdir($dirPath); }
Alternativ können Sie, wenn Sie PHP 5.2 oder höher verwenden, einen RecursiveIterator verwenden, um das Verzeichnis zu löschen, ohne die Rekursion selbst zu implementieren:
function removeDir(string $dir): void { $it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS); $files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); foreach($files as $file) { if ($file->isDir()){ rmdir($file->getPathname()); } else { unlink($file->getPathname()); } } rmdir($dir); }
Das obige ist der detaillierte Inhalt vonWie lösche ich ein Verzeichnis mit Dateien in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!