Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kopiere ich den Inhalt eines Verzeichnisses rekursiv mit PHP?

Wie kopiere ich den Inhalt eines Verzeichnisses rekursiv mit PHP?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-29 10:30:291079Durchsuche

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

Kopieren des Inhalts eines Verzeichnisses 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn