0

我正在使用我编写的函数来复制目录和文件。它只复制目录和文件一次。仅当文件不存在时,如何将文件从源文件夹复制到目标文件夹?

这是功能。基本上我想将analyst_uploads 中的文件夹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 );

}
4

2 回答 2

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

这使用 linuxcp -ur并且只会复制目标目录中不存在的文件,或者替换目标目录中比源文件更旧的文件。它将递归运行。

当然,如果您想要一个仅限 PHP 的解决方案,您也许可以使用 aRecursiveDirectoryIterator或类似的方法来遍历源目录中的所有文件并逐一比较/复制它们。

于 2012-11-29T20:48:55.193 回答
0
if (!file_exists($target)) {
   copy( $source, $target );
}
于 2012-11-29T20:36:46.150 回答