Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menyalin Kandungan Direktori Menggunakan PHP Secara Rekursif?

Bagaimana untuk Menyalin Kandungan Direktori Menggunakan PHP Secara Rekursif?

Patricia Arquette
Lepaskan: 2024-10-29 10:30:29
asal
1125 orang telah melayarinya

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

Menyalin Kandungan Direktori menggunakan PHP

Apabila cuba menyalin kandungan direktori ke lokasi lain, salinan kod ("old_location/*.*"," new_location/") mungkin menghadapi ralat yang menunjukkan bahawa strim tidak ditemui. Ini boleh berlaku apabila asterisk (*) digunakan secara bersendirian dalam fungsi salin.

Untuk menyalin keseluruhan kandungan direktori dengan berkesan, termasuk subdirektori dan failnya, kami boleh menggunakan fungsi rekursif seperti di bawah:

<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>
Salin selepas log masuk

Dengan menggunakan fungsi rekursif ini, kami boleh menyalin keseluruhan kandungan direktori dengan cekap ke lokasi lain, memastikan semua subdirektori dan fail dipindahkan dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Menyalin Kandungan Direktori Menggunakan PHP Secara Rekursif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan