function copyDirectory($src, $dest)
 {
     $ret = '';
     if (@opendir($dest)) {
         if (@opendir($src)) {
             $list = FileUtlity::directoryList($src, FileUtility::RECURSE);
             foreach ($list as $dir => $files) {
                 $path_array = StringUtility::split($dir, '/');
                 /*test for trailing slash*/
                 if (!preg_match('\\//$', $dest)) {
                     $dest = $dest . '/';
                 }
                 $cur_path = $dest;
                 foreach ($path_array as $pcmp) {
                     $cur_path = $cur_path . $pcmp;
                     if (!@opendir($cur_path)) {
                         mkdir($cur_path);
                     }
                 }
                 foreach ($files as $file) {
                     FileUtility::copyFile($dir . $file, $cur_path . $file);
                 }
             }
         } else {
             throw new Exception('Source directory: ' . $src . ' does not exist or isn\'t a directory in fileutility.class.inc');
         }
     } else {
         throw new Exception('Destination directory: ' . $dest . ' does not exist or isn\'t a directory in fileutility.class.inc');
     }
 }