【问题标题】:PHP recursive copy directories to single directoryPHP递归复制目录到单个目录
【发布时间】:2016-07-28 22:05:23
【问题描述】:

在 PHP 中,我想递归地将目录及其子目录中的所有文件复制到单个目录没有子目录

例如

.../dir/subdir1/file1.pdf

.../dir/subdir1/file2.pdf

.../dir/subdir2/file3.pdf

.../dir/subdir2/file4.pdf

应该变成:

.../newdir/file1.pdf

.../newdir/file2.pdf

.../newdir/file3.pdf

.../newdir/file4.pdf

即。不再有“子目录”级别。

我正在使用这个 PHP 代码,它复制了所有文件,但保留了不需要的子目录:

<?php
$src = "/dir/";
$dst = "/newdir/";

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

recurse_copy($src,$dst);

echo "<H3>Copy Paste completed!</H3>"; //output when done
?>

【问题讨论】:

    标签: php recursion


    【解决方案1】:

    当文件是目录时,您为目标参数传递了错误的值。如果你想要一个扁平的目录结构,它应该只是:

    recurse_copy($src . '/' . $file, $dst);
    

    代替:

    recurse_copy($src . '/' . $file, $dst . '/' . $file);
    

    【讨论】:

      猜你喜欢
      • 2013-11-06
      • 2013-06-13
      • 2019-09-18
      • 2011-03-10
      • 2015-05-18
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      相关资源
      最近更新 更多