Maison > développement back-end > tutoriel php > Comment copier le contenu d'un répertoire en utilisant PHP de manière récursive ?

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
1151 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!

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