复制文件夹而不覆盖

时间:2009-11-12 09:47:17

标签: php

我发现这个问题(这里)有关复制文件而不覆盖

的问题

How do you copy a file in PHP without overwriting an existing file?

我需要的是一个用于复制文件夹中所有文件的php脚本,还有一些子文件夹;所以它应该是递归的。

我需要通过FTP传输它,所以我不知道这对方法有很大影响。

提前多多感谢!

2 个答案:

答案 0 :(得分:3)

a comment的手册页copy上试试这个:

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); 
} 

请注意,此解决方案将很乐意覆盖$dst目录中存在的所有文件。如果您想避免这种情况,可以将this question中的代码包装到函数中,然后调用该函数而不是copy

如果您澄清我很乐意编辑我的答案,我不确定您想通过FTP传输什么。

答案 1 :(得分:0)

文件系统副本和FTP副本之间存在很大差异,您可以查看PEAR FTP Class