Maison >développement back-end >tutoriel php >Comment copier récursivement un répertoire entier en PHP ?

Comment copier récursivement un répertoire entier en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 06:53:30442parcourir

How to Recursively Copy an Entire Directory in PHP?

Copier le contenu entier d'un répertoire vers un autre en PHP

Un utilisateur a rencontré un problème en tentant de copier le contenu d'un répertoire entier vers un autre emplacement à l'aide de l'option fonction copy(). Le message d'erreur indiquait qu'aucun flux n'a été trouvé et que l'espace réservé . n'a pas pu être localisé.

Solution :

Le code fourni ne fonctionne que pour répertoires à un seul niveau. Pour copier des répertoires à plusieurs niveaux, une approche plus complète est nécessaire :

<code class="php">function recurseCopy(
    string $sourceDirectory,
    string $destinationDirectory,
    string $childFolder = ''
): void {
    $directory = opendir($sourceDirectory);

    if (is_dir($destinationDirectory) === false) {
        mkdir($destinationDirectory);
    }

    if ($childFolder !== '') {
        if (is_dir("$destinationDirectory/$childFolder") === false) {
            mkdir("$destinationDirectory/$childFolder");
        }

        while (($file = readdir($directory)) !== false) {
            if ($file === '.' || $file === '..') {
                continue;
            }

            if (is_dir("$sourceDirectory/$file") === true) {
                recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file");
            } else {
                copy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file");
            }
        }

        closedir($directory);

        return;
    }

    while (($file = readdir($directory)) !== false) {
        if ($file === '.' || $file === '..') {
            continue;
        }

        if (is_dir("$sourceDirectory/$file") === true) {
            recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$file");
        } else {
            copy("$sourceDirectory/$file", "$destinationDirectory/$file");
        }
    }

    closedir($directory);
}</code>

Utilisation :

Fournir les chemins d'accès aux répertoires source et de destination dans l'appel de fonction , et il copiera récursivement tous les fichiers et répertoires de la source vers la destination.

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:
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