0

ディレクトリとファイルをコピーするために書いた関数を使用しています。ディレクトリとファイルを一度コピーするだけです。ファイルが存在しない場合にのみ、ソースフォルダーから宛先フォルダーにファイルをコピーするにはどうすればよいですか?

ここに関数があります。基本的に、analyst_uploads のフォルダー labref とそのコンテンツを 2 番目のフォルダー 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 のみのソリューションが必要な場合は、RecursiveDirectoryIteratorまたは同様の方法を使用して、ソース ディレクトリ内のすべてのファイルを反復処理し、それらを 1 つずつ比較/コピーすることができます。

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