ホームページ > バックエンド開発 > PHPチュートリアル > PHP を使用してディレクトリの内容を再帰的にコピーするにはどうすればよいですか?

PHP を使用してディレクトリの内容を再帰的にコピーするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-29 10:30:29
オリジナル
1111 人が閲覧しました

How to Copy a Directory's Contents Using PHP Recursively?

PHP を使用したディレクトリの内容のコピー

ディレクトリの内容を別の場所にコピーしようとすると、コード コピー ("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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート