2016-08-10 11 views
1

私は、フォルダとファイル内のフォルダとファイルをコピーするのに役立つはずの次の関数を持っています。次の目的地にCodeigniter再帰的にフォルダとファイルをコピーする

Documents/Projects/Sensitization Workshop Meeting/Milestones/Activity No 1/Tasks/Task One/New File.txt 

:私は、次のソースをコピーしたい

Documents/Projects/Sensitization Workshop Meeting/Milestones/Asqwerty/Tasks/Task One/ New File.txt 

ので、フォルダの変更が活動なし1 - > Asqwerty、 「私は、次の機能を試してみましたが、それはdidnのトンの仕事:

// copy recursive 
    function recursive_copy($source, $dest) { 
     if (is_dir($source)) { 
      $dir_handle = opendir($source); 

      while ($file = readdir($dir_handle)) { 
       if ($file != "." && $file != "..") { 
        if (is_dir($source . "/" . $file)) { 
         if (!is_dir($dest . "/" . $file)) { 

          mkdir($dest . "/" . $file, 0777, TRUE); 
         } 

         $this->recurse_copy($source . '/' . $file, $dest . '/' . $file); 
        } else { 

         copy($source . "/" . $file, $dest . "/" . $file); 
        } 
       } 
      } 
      closedir($dir_handle); 
     } else { 
      copy($source, $dest); 
     } 
    } 

が、次のレベルにそれはコピーのみ:

Source : Documents/Projects/Sensitization Workshop Meeting/Milestones/Activity No 1/Tasks 


Destination : Documents/Projects/Sensitization Workshop Meeting/Milestones/Asqwerty/Tasks 

私はこれをどのように探し出すことができますか?ユーザがログインするシステムに私はこれをテストしていませんが、私はこれを考える

$source  = BASE_PRINCIPAL; 
$dest   = MEMBER_PRINCIPAL . $user_id . MEMBER_RESOURCES; 

private function _create_basic_themplates($user_id, $source, $dest){ 
     // recursive function to copy 
     // all subdirectories and contents: 
     mkdir($dest, DIR_WRITE_MODE, TRUE); 

     foreach(
       $iterator = new \RecursiveIteratorIterator(
                  new \RecursiveDirectoryIterator($source, \RecursiveDirectoryIterator::SKIP_DOTS), 
                  \RecursiveIteratorIterator::SELF_FIRST) as $item 
       ){ 
      if($item->isDir()){ 
       mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName(), DIR_WRITE_MODE, TRUE); 
      } 
      else{ 
       copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName()); 
      } 
     } 
    } 
+0

[phpを使ってディレクトリの内容を別のディレクトリにコピー]の複製があります(http://stackoverflow.com/questions/2050859/copy-entire-contents-of-a-directory-to-another-using-php) – MonkeyZeus

+0

@MonkeyZeus私はそれを試してみました...それは、親ディレクトリではなく、二次ディレクトリのために働いた。 –

答えて

0

はたらくはずです:

function recursive_copy($source, $dest) 
{ 
    if(is_dir($source))) 
    { 
     if(!is_dir($dest)) 
     { 
      mkdir($dest, 0777, true); 
     } 

     $dir_items = array_diff(scandir($source), array('..', '.')); 

     if(count($dir_items) > 0) 
     { 
      foreach($dir_items as $v) 
      { 
       $this->recursive_copy(rtrim(rtrim($source, '/'), '\\').DIRECTORY_SEPARATOR.$v, rtrim(rtrim($dest, '/'), '\\').DIRECTORY_SEPARATOR.$v); 
      } 
     } 
    } 
    elseif(is_file($source))) 
    { 
     copy($source, $dest); 
    } 
} 
0

通常

contant.phpを使用

define('DIR_WRITE_MODE', 0777); 
define('BASE_PRINCIPAL', 'resources/base_theme_member/web2'); 
define('MEMBER_RESOURCES', '/resources/'); 

コントローラをフォルダやファイルのリソースを作成するには

関連する問題