Löschen eines Verzeichnisses mit verschachtelten Dateien
F: Ich versuche, ein Verzeichnis mit rmdir() zu löschen, aber es schlägt fehl, wenn das Verzeichnis enthält Dateien. Wie kann ich ein Verzeichnis und seinen gesamten Inhalt löschen?
A: Hier sind zwei Methoden, um ein Verzeichnis mit all seinen Dateien zu löschen:
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); }
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); }
Beide dieser Methoden löscht effektiv ein Verzeichnis einschließlich aller seiner Dateien und Unterverzeichnisse.
Das obige ist der detaillierte Inhalt vonWie lösche ich ein Verzeichnis und seinen Inhalt in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!