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

Linda Hamilton
Libérer: 2024-10-29 06:53:30
original
400 Les gens l'ont consulté

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

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!

source:php.cn
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