Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menyalin Kandungan Direktori secara Rekursif dalam 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:
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>
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!