Wie kopiere ich ein ganzes Verzeichnis rekursiv mit PHP?

Patricia Arquette
Freigeben: 2024-10-30 19:31:03
Original
263 Leute haben es durchsucht

How to Recursively Copy an Entire Directory Using PHP?

So kopieren Sie ein gesamtes Verzeichnis rekursiv mit PHP

Das Kopieren des gesamten Inhalts eines Verzeichnisses an einen anderen Ort kann eine häufige Aufgabe in PHP sein Programmierung. Während die Kopierfunktion für eine flache Verzeichnisstruktur verwendet werden kann, kann es beim Umgang mit mehreren Verzeichnisebenen zu Einschränkungen kommen.

Dave fragte, wie man den Inhalt eines Verzeichnisses mit copy ("old_location/*. *","new_location/"), aber der bereitgestellte Code gibt einen Fehler aus, der besagt, dass der Stream nicht gefunden werden kann und *.* nicht gefunden wird.

Eine Lösung, die dieses Problem behebt, ist die Verwendung einer rekursiven Funktion wie die folgende:

<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);
}</code>
Nach dem Login kopieren

Durch die Verwendung von Rekursion kann diese Funktion die Verzeichnisstruktur durchlaufen und bei Bedarf untergeordnete Verzeichnisse erstellen. Es überprüft den Dateityp für jedes Element im Verzeichnis und ruft sich rekursiv auf, um nach Bedarf Dateien zu kopieren oder Verzeichnisse zu erstellen.

Das obige ist der detaillierte Inhalt vonWie kopiere ich ein ganzes Verzeichnis rekursiv mit PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!