디렉토리 내용을 다른 위치로 복사하려고 하면 코드 복사("old_location/*.*"," new_location/")에는 스트림을 찾을 수 없다는 오류가 발생할 수 있습니다. 이는 복사 기능에서 별표(*)를 단독으로 사용할 때 발생할 수 있습니다.
하위 디렉터리 및 파일을 포함하여 디렉터리의 전체 내용을 효과적으로 복사하려면 아래와 같은 재귀 함수를 사용할 수 있습니다.
<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>
이 재귀 기능을 사용하면 디렉터리의 전체 내용을 다른 위치에 효율적으로 복사하여 모든 하위 디렉터리와 파일이 올바르게 전송되도록 할 수 있습니다.
위 내용은 PHP를 사용하여 디렉토리의 내용을 재귀적으로 복사하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!