Heim > Artikel > Backend-Entwicklung > Wie kopiere ich Verzeichnisinhalte rekursiv in PHP?
Kopieren von Verzeichnisinhalten mit PHP
Das Kopieren des gesamten Inhalts eines Verzeichnisses an einen anderen Ort in PHP kann eine unkomplizierte Aufgabe sein, die jedoch mit Problemen verbunden ist Probleme wie der Fehler „Stream nicht gefunden“ können frustrierend sein. Um dies zu vermeiden, ist ein expliziterer Ansatz erforderlich.
Um die Einschränkungen der Verwendung von Platzhaltern in der Funktion copy() zu überwinden, kann eine rekursive Funktion namens recurseCopy() verwendet werden. Diese Funktion ermöglicht die Replikation von mehrstufigen Verzeichnisstrukturen und deren Inhalten.
Die Funktion recurseCopy() benötigt drei Parameter:
Die Funktion durchläuft die Dateien und Unterverzeichnisse des Quellverzeichnisses. Wenn eine Datei gefunden wird, wird sie direkt in das Zielverzeichnis kopiert. Wenn ein Unterverzeichnis gefunden wird, ruft sich die Funktion rekursiv auf, um dessen Inhalt in das entsprechende Unterverzeichnis unter dem Zielverzeichnis zu kopieren.
Hier ist ein Beispiel-PHP-Code, der die Funktion recurseCopy() verwendet:
<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>
Dieser Code kopiert rekursiv den Inhalt des Verzeichnisses „my_source_dir“ in das Verzeichnis „my_destination_dir“, wobei das Verzeichnis erhalten bleibt Struktur und Dateiinhalt.
Das obige ist der detaillierte Inhalt vonWie kopiere ich Verzeichnisinhalte rekursiv in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!