Maison > Article > développement back-end > Comment copier de manière récursive le contenu d’un répertoire en PHP ?
Copier le contenu d'un répertoire avec PHP
Copier l'intégralité du contenu d'un répertoire vers un autre emplacement en PHP peut être une tâche simple, mais se heurter à des problèmes tels que l’erreur de flux introuvable peuvent être frustrants. Pour éviter cela, une approche plus explicite est nécessaire.
Pour surmonter les limitations liées à l'utilisation de caractères génériques dans la fonction copy(), une fonction récursive nommée recurseCopy() peut être utilisée. Cette fonction permet la réplication de structures de répertoires multi-niveaux et de leur contenu.
La fonction recurseCopy() prend trois paramètres :
La fonction parcourt les fichiers et sous-répertoires du répertoire source. Si un fichier est rencontré, il est directement copié dans le répertoire de destination. Si un sous-répertoire est trouvé, la fonction s'appelle récursivement pour copier son contenu dans le sous-répertoire correspondant sous le répertoire de destination.
Voici un exemple de code PHP qui utilise la fonction recurseCopy() :
<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); } $sourceDirectory = 'my_source_dir'; $destinationDirectory = 'my_destination_dir'; recurseCopy($sourceDirectory, $destinationDirectory);</code>
Ce code copiera récursivement le contenu du répertoire my_source_dir vers le répertoire my_destination_dir, en préservant la structure du répertoire et le contenu du fichier.
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!