簡體   English   中英

PHP遞歸復制目錄到單個目錄

[英]PHP recursive copy directories to single directory

在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

即。 沒有“ subdir”級別了。

我正在使用此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
?>

當文件是目錄時,您為目標參數傳遞了錯誤的值。 如果要使用平面目錄結構,則應為:

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

代替:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM