Comment copier le contenu d'un répertoire en utilisant PHP de manière récursive ?

Patricia Arquette
Libérer: 2024-10-29 10:30:29
original
1078 Les gens l'ont consulté

How to Copy a Directory's Contents Using PHP Recursively?

Copier le contenu d'un répertoire à l'aide de PHP

Lorsque vous tentez de copier le contenu d'un répertoire vers un autre emplacement, la copie de code ("old_location/*.*"," new_location/") peut rencontrer une erreur indiquant que le flux n'est pas trouvé. Cela peut se produire lorsqu'un astérisque (*) est utilisé seul dans la fonction de copie.

Pour copier efficacement l'intégralité du contenu d'un répertoire, y compris ses sous-répertoires et fichiers, nous pouvons utiliser une fonction récursive comme celle ci-dessous :

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

    // Check if the destination directory exists, if not, create it
    if (is_dir($destinationDirectory) === false) {
        mkdir($destinationDirectory);
    }

    // If there's a child folder specified, create it if it doesn't exist
    if ($childFolder !== '') {
        if (is_dir("$destinationDirectory/$childFolder") === false) {
            mkdir("$destinationDirectory/$childFolder");
        }

        // Loop through the files in the source directory
        while (($file = readdir($directory)) !== false) {
            // Ignore current and parent directories
            if ($file === '.' || $file === '..') {
                continue;
            }

            // If the current file is a directory, recursively copy it
            if (is_dir("$sourceDirectory/$file") === true) {
                recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file");
            }
            // If it's a file, simply copy it
            else {
                copy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file");
            }
        }

        // Close the source directory
        closedir($directory);

        // Recursion ends here
        return;
    }

    // Loop through the files in the source directory
    while (($file = readdir($directory)) !== false) {
        // Ignore current and parent directories
        if ($file === '.' || $file === '..') {
            continue;
        }

        // If the current file is a directory, recursively copy it
        if (is_dir("$sourceDirectory/$file") === true) {
            recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$file");
        }
        // If it's a file, simply copy it
        else {
            copy("$sourceDirectory/$file", "$destinationDirectory/$file");
        }
    }

    // Close the source directory
    closedir($directory);
}</code>
Copier après la connexion

En utilisant cette fonction récursive, nous pouvons copier efficacement l'intégralité du contenu d'un répertoire vers un autre emplacement, garantissant que tous les sous-répertoires et fichiers sont correctement transférés.

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