使用PHP 複製目錄內容
在PHP 中將目錄的全部內容複製到另一個位置可能是一項簡單的任務,但會遇到諸如流未找到錯誤之類的問題可能會令人沮喪。為了避免這種情況,需要更明確的方法。
為了克服在 copy() 函數中使用通配符的限制,可以使用名為 recurseCopy() 的遞歸函數。此函數允許複製多層目錄結構及其內容。
recurseCopy() 函數採用三個參數:
此函數迭代來源目錄的檔案和子目錄。如果遇到文件,則直接複製到目標目錄。如果找到子目錄,函數會遞歸呼叫自身,將其內容複製到目標目錄下對應的子目錄中。
以下是使用 recurseCopy() 函數的範例 PHP 程式碼:
<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>
此程式碼將遞歸地將 my_source_dir 目錄的內容複製到 my_destination_dir 目錄,保留目錄結構和檔案內容。
以上是如何在 PHP 中遞歸複製目錄內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!