Bagaimana untuk Menyalin Kandungan Direktori secara Rekursif dalam PHP?

Linda Hamilton
Lepaskan: 2024-10-31 12:35:02
asal
807 orang telah melayarinya

How to Recursively Copy Directory Contents in PHP?

Menyalin Kandungan Direktori dengan PHP

Menyalin keseluruhan kandungan direktori ke lokasi lain dalam PHP boleh menjadi tugas yang mudah, tetapi berjalan ke isu seperti ralat strim tidak ditemui boleh mengecewakan. Untuk mengelakkan ini, pendekatan yang lebih jelas diperlukan.

Untuk mengatasi had penggunaan kad bebas dalam fungsi copy(), fungsi rekursif bernama recurseCopy() boleh digunakan. Fungsi ini membenarkan replikasi struktur direktori berbilang peringkat dan kandungannya.

Fungsi recurseCopy() mengambil tiga parameter:

  • $sourceDirectory: Direktori sumber untuk disalin
  • $destinationDirectory: Direktori destinasi untuk menyimpan kandungan yang disalin
  • $childFolder (pilihan): Nama folder di bawah $destinationDirectory untuk menyusun fail yang disalin (digunakan semasa rekursi)

Fungsi ini berulang melalui fail dan subdirektori direktori sumber. Jika fail ditemui, ia terus disalin ke direktori destinasi. Jika subdirektori ditemui, fungsi itu secara rekursif memanggil dirinya sendiri untuk menyalin kandungannya ke dalam subdirektori yang sepadan di bawah direktori destinasi.

Berikut ialah contoh kod PHP yang menggunakan fungsi recurseCopy():

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

Kod ini akan menyalin secara rekursif kandungan direktori my_source_dir ke direktori my_destination_dir, mengekalkan struktur direktori dan kandungan fail.

Atas ialah kandungan terperinci Bagaimana untuk Menyalin Kandungan Direktori secara Rekursif dalam PHP?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!