移動和複製檔案和目錄

複製檔案

copy 將第一個引數中的原始檔複製到第二個引數中的目標。已解析的目標需要位於已建立的目錄中。

if (copy('test.txt', 'dest.txt')) {
    echo 'File has been copied successfully';
} else {
    echo 'Failed to copy file to destination given.'
}

使用遞迴複製目錄

複製目錄非常類似於刪除目錄,除了檔案 copy 而不是 unlink 使用,而對於目錄,使用 mkdir 而不是 rmdir ,而不是在函式的末尾。

function recurse_delete_dir(string $src, string $dest) : int {
    $count = 0;

    // ensure that $src and $dest end with a slash so that we can concatenate it with the filenames directly
    $src = rtrim($dest, "/\\") . "/";
    $dest = rtrim($dest, "/\\") . "/";

    // use dir() to list files
    $list = dir($src);

    // create $dest if it does not already exist
    @mkdir($dest);

    // store the next file name to $file. if $file is false, that's all -- end the loop.
    while(($file = $list->read()) !== false) {
        if($file === "." || $file === "..") continue;
        if(is_file($src . $file)) {
            copy($src . $file, $dest . $file);
            $count++;
        } elseif(is_dir($src . $file)) {
            $count += recurse_copy_dir($src . $file, $dest . $file);
        }
    }

    return $count;
}

重新命名/移動

重新命名/移動檔案和目錄要簡單得多。使用 rename 函式可以在一次呼叫中移動或重新命名整個目錄。

  • rename("~/file.txt", "~/file.html");

  • rename("~/dir", "~/old_dir");

  • rename("~/dir/file.txt", "~/dir2/file.txt");