note 104809 modified in function.copy by danbrown

From: Date: Fri, 08 Jul 2011 15:09:49 +0000
Subject: note 104809 modified in function.copy by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-181356@lists.php.net to get a copy of this message
I had to copy a directory but the top level folder name would be different at dest i.e. dirparent/dirchild -> diff/dirchild . I thought I would just copy and rename the destination but you can't rename non empty directories. I wrote this function to work around this: <?php function RecursiveCopy($source, $dest, $diffDir = ''){ $sourceHandle = opendir($source); if(!$diffDir) $diffDir = $source; mkdir($dest . '/' . $diffDir); while($res = readdir($sourceHandle)){ if($res == '.' || $res == '..') continue; if(is_dir($source . '/' . $res)){ RecursiveCopy($source . '/' . $res, $dest, $diffDir . '/' . $res); } else { copy($source . '/' . $res, $dest . '/' . $diffDir . '/' . $res); } } } ?> --was-- I had to copy a directory but the top level folder name would be different at dest i.e. dirparent/dirchild -> diff/dirchild . I thought I would just copy and rename the destination but you can't rename non empty directories. I wrote this function to work around this: function RecursiveCopy($source, $dest, $diffDir = ''){ $sourceHandle = opendir($source); if(!$diffDir) $diffDir = $source; mkdir($dest . '/' . $diffDir); while($res = readdir($sourceHandle)){ if($res == '.' || $res == '..') continue; if(is_dir($source . '/' . $res)){ RecursiveCopy($source . '/' . $res, $dest, $diffDir . '/' . $res); } else { copy($source . '/' . $res, $dest . '/' . $diffDir . '/' . $res); } } } http://php.net/manual/en/function.copy.php

« previous php.notes (#181356) next »