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>
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!