2012-11-29 265 views
0

我正在使用我寫入的功能來複制目錄和文件。它只是複製目錄和文件一次。僅當文件不存在時,我如何才能將源文件夾中的文件複製到目標文件夾?遞歸複製文件和文件夾和子文件夾

這裏是函數。基本上我想將分析器上載文件夾中的文件夾labref及其內容複製到第二個文件夾store_for_issue中。如果文件在同一天上傳到源文件夾,應將文件複製到目標文件夾'store_for_issue'。創建文件夾,如果不存在或更新內容

public function full_copy() { 
     $labref= $this->uri->segment(3);  
     $source='analyst_uploads/'.date('Y').'/'.date('M').'/'.$labref; 
     $newfolder='store_for_issue'; 
     if(is_dir($newfolder)){ 
      mkdir($newfolder.'/'.$labref,0777,TRUE); 
     } 
     $target=$newfolder.'/'.$labref.'/'; 
     copy($source, $target); 

} 

回答

0
if (!file_exists($target)) { 
    copy($source, $target); 
} 
1

如何:

public function full_copy() { 
     $labref= $this->uri->segment(3);  
     $source='analyst_uploads/'.date('Y').'/'.date('M').'/'.$labref; 
     $newfolder='store_for_issue'; 
     if(!is_dir($newfolder)){ 
      mkdir($newfolder.'/'.$labref,0777,TRUE); 
     } 
     $target=$newfolder.'/'.$labref.'/'; 
     shell_exec('cp -ur '. $source . ' ' . $target); 
} 

本使用Linux cp -ur,只會複製不目標目錄中的文件,或替換目標目錄中比源文件早的文件。它將遞歸運行。

當然,如果您想要一個僅限PHP的解決方案,您可以使用RecursiveDirectoryIterator或類似的方法迭代源目錄中的所有文件,並逐個比較/複製它們。

相關問題