如何使用 PHP 遞歸複製整個目錄
將目錄的全部內容複製到另一個位置可能是 PHP 中的常見任務編程。雖然複製功能可以用於平面目錄結構,但在處理多層目錄時可能會遇到限制。
Dave 詢問如何使用 copy ("old_location/*. *","new_location/"),但提供的程式碼輸出錯誤,指出找不到串流且找不到 *.*。
解決此問題的解決方案是使用遞歸函數,例如下面的:
<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>
透過利用遞歸,該函數可以遍歷目錄結構並在必要時建立子目錄。它檢查目錄中每個項目的檔案類型,並根據需要遞歸呼叫自身來複製檔案或建立目錄。
以上是如何使用 PHP 遞歸複製整個目錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!