将一个文件夹中的所有文件和文件夹移动到另一个?

新手上路,请多包涵

我想将文件夹内的所有文件和文件夹移动到另一个文件夹。我找到了将一个文件夹中的所有文件复制到另一个文件夹的代码。 将文件夹中的所有文件移动到另一个文件夹

// Get array of all source files
$files = scandir("source");
// Identify directories
$source = "source/";
$destination = "destination/";
// Cycle through all source files
foreach ($files as $file) {
  if (in_array($file, array(".",".."))) continue;
  // If we copied this successfully, mark it for deletion
  if (copy($source.$file, $destination.$file)) {
    $delete[] = $source.$file;
  }
}
// Delete all successfully-copied files
foreach ($delete as $file) {
  unlink($file);
}

如何更改此设置以将此文件夹内的所有文件夹和文件移动到另一个文件夹。

原文由 Sara 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 352
2 个回答

这是我用的

   // Function to remove folders and files
    function rrmdir($dir) {
        if (is_dir($dir)) {
            $files = scandir($dir);
            foreach ($files as $file)
                if ($file != "." && $file != "..") rrmdir("$dir/$file");
            rmdir($dir);
        }
        else if (file_exists($dir)) unlink($dir);
    }

    // Function to Copy folders and files
    function rcopy($src, $dst) {
        if (file_exists ( $dst ))
            rrmdir ( $dst );
        if (is_dir ( $src )) {
            mkdir ( $dst );
            $files = scandir ( $src );
            foreach ( $files as $file )
                if ($file != "." && $file != "..")
                    rcopy ( "$src/$file", "$dst/$file" );
        } else if (file_exists ( $src ))
            copy ( $src, $dst );
    }

用法

    rcopy($source , $destination );

另一个不删除目标文件或文件夹的例子

    function recurse_copy($src,$dst) {
        $dir = opendir($src);
        @mkdir($dst);
        while(false !== ( $file = readdir($dir)) ) {
            if (( $file != '.' ) && ( $file != '..' )) {
                if ( is_dir($src . '/' . $file) ) {
                    recurse_copy($src . '/' . $file,$dst . '/' . $file);
                }
                else {
                    copy($src . '/' . $file,$dst . '/' . $file);
                }
            }
        }
        closedir($dir);
    }

请参阅: http ://php.net/manual/en/function.copy.php 以获取更多有趣的示例

谢谢 :)

原文由 Baba 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 rename 而不是 copy

与同名的 C 函数不同, rename 可以将文件从一个文件系统移动到另一个文件系统(自 Unix 上的 PHP 4.3.3 和 Windows 上的 PHP 5.3.1 起)。

原文由 Joni 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏