Heim > Artikel > Backend-Entwicklung > Wie kopiere ich den Inhalt eines Verzeichnisses rekursiv mit PHP?
Beim Versuch, den Inhalt eines Verzeichnisses an einen anderen Ort zu kopieren, wird der Code kopiert ("old_location/*.*"," new_location/") kann ein Fehler auftreten, der darauf hinweist, dass der Stream nicht gefunden wurde. Dies kann auftreten, wenn in der Kopierfunktion allein ein Sternchen (*) verwendet wird.
Um effektiv den gesamten Inhalt eines Verzeichnisses, einschließlich seiner Unterverzeichnisse und Dateien, zu kopieren, können wir eine rekursive Funktion wie die folgende verwenden:
<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>
Durch die Verwendung dieser rekursiven Funktion können wir den gesamten Inhalt eines Verzeichnisses effizient an einen anderen Ort kopieren und so sicherstellen, dass alle Unterverzeichnisse und Dateien ordnungsgemäß übertragen werden.
Das obige ist der detaillierte Inhalt vonWie kopiere ich den Inhalt eines Verzeichnisses rekursiv mit PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!