如何复制包含子目录的目录?

时间:2016-07-26 09:43:06

标签: php copy

在我的FTP上,我想复制一个包含文件和子目录的目录。由于我不知道子目录的名称,也不知道它们有多少,我需要动态的东西。

此脚本会将所有文件从一个目录复制到另一个目录。

public function copyfolder($source, $destination) { 
    //Open the specified directory
    $directory = opendir($source); 

    //Create the copy folder location
    mkdir($destination);

    //Scan through the folder one file at a time
    while(($file = readdir($directory)) != false) { 
        //Copy each individual file 
        copy($source.'/' .$file, $destination.'/'.$file); 
    } 
}

当目录包含子目录时,问题就开始了。所以上面的代码会将它们视为文件。然后我希望脚本足够聪明,以便了解它们是子类别,并尝试为它们运行相同的循环,因为它通过主目录的每个文件。

我真的不知道如何做到这一点。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

请注意,此解决方案并不是很好,因为它不可移植。

您可以使用系统命令行来复制文件,它会比php循环更快。

Linux:cp -R

Windows:xcopy

Ps:如果你真的想使用php,你必须做一个递归函数,但如果需要很长时间来复制文件,你的脚本将会超时。

答案 1 :(得分:0)

在你的PHP代码中,你可以将代码作为,

public function()
{
   ...
   $sourcedir = ...;
   $targetdir = ...;
   `cp -r $sourcedir $targetdir`;
}
相关问题