Maison > développement back-end > tutoriel php > Comment supprimer un répertoire contenant des fichiers en PHP ?

Comment supprimer un répertoire contenant des fichiers en PHP ?

Linda Hamilton
Libérer: 2024-12-05 19:09:12
original
329 Les gens l'ont consulté

How to Delete a Directory Containing Files in PHP?

Supprimer des répertoires contenant des fichiers

Supprimer un répertoire est facile, mais que se passe-t-il lorsque le répertoire contient des fichiers ? La fonction rmdir() échoue s'il y a des fichiers dans le répertoire. Pour supprimer le répertoire, vous devez d'abord supprimer tous les fichiers qu'il contient.

Il existe plusieurs façons de procéder. Une option consiste à utiliser une fonction récursive qui supprime tous les fichiers et dossiers du répertoire, y compris les répertoires imbriqués. Voici un exemple :

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);
}
Copier après la connexion

Alternativement, si vous utilisez PHP 5.2 ou version ultérieure, vous pouvez utiliser un RecursiveIterator pour supprimer le répertoire sans implémenter vous-même la récursion :

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);
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal