ホームページ >バックエンド開発 >PHPチュートリアル >PHP でディレクトリの内容を再帰的にコピーするにはどうすればよいですか?
PHP を使用したディレクトリの内容のコピー
PHP でディレクトリの内容全体を別の場所にコピーするのは簡単な作業ですが、次のような問題が発生します。ストリームが見つからないエラーなどの問題はイライラする可能性があります。これを回避するには、より明示的なアプローチが必要です。
copy() 関数でのワイルドカード使用の制限を克服するには、 recurseCopy() という再帰関数を使用できます。この関数により、マルチレベルのディレクトリ構造とその内容のレプリケーションが可能になります。
recurseCopy() 関数は 3 つのパラメータを取ります:
この関数は、ソース ディレクトリのファイルとサブディレクトリを反復処理します。ファイルが見つかった場合は、宛先ディレクトリに直接コピーされます。サブディレクトリが見つかった場合、関数はそれ自体を再帰的に呼び出して、その内容を宛先ディレクトリの下の対応するサブディレクトリにコピーします。
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 中国語 Web サイトの他の関連記事を参照してください。