A-A+

php批量复制指定所有目录下的文件到一个文件夹下

2012年05月17日 PHP技术文章 暂无评论 阅读 357 views 次

php批量进行复制指定的目录文件夹下所有文件复制到另一个文件夹下,还可以将其原文件夹进行递归删除操作,由以下三个函数组成一个功能,批量拷贝目录(包括子目录)下所有文件到一个文件夹下; 最大特点是它不复制目录,只复制所有子目中的文件,有了这个php小源码程序,作为phper者,再复制程序的时候就可以直接应用php了,当然,如果不是网站应用,那就没必要用这个了。

<?php   
/**  
 * 递归删除文件夹  
 * deldirs  
 */  
function deldirs($dir) {   
  $dh=opendir($dir);   
  while ($file=readdir($dh)) {   
    if($file!=="." && $file!=="..") {   
      $fullpath=$dir."/".$file;   
      if(!is_dir($fullpath)) {   
          unlink($fullpath);   
      } else {   
          deldirs($fullpath);   
      }   
    }   
  }   
  
  closedir($dh);   
  
  if(rmdir($dir)) {   
    return true;   
  } else {   
    return false;   
  }   
}       
  
 /**  
 *批量拷贝目录(包括子目录下所有文件)  
 * copy a direction's all files to another direction  
 *用法:  
 * copydir_recurse("feiy","feiy2",1):拷贝feiy下的文件到 feiy2,包括子
目录
 * copydir_recurse("feiy","feiy2",0):拷贝feiy下的文件到 feiy2,不包括
子目录
 * 参数说明:  
 * $source:源目录名  
 * $destination:目的目录名  
 * $child:复制时,是不是包含的子目录  
*/  
function copydir_recurse($source,$destination ,$child){   
    static $arr_file=array();   
    if(!is_dir($source)){   
        echo("Error:the $source is not a direction!");   
        return 0;   
    }   
  
    if(!is_dir($destination)){   
        mkdir($destination,0777);   
    }   
    $handle=dir($source);   
  
    while($entry=$handle->read())   
    {   
        if(($entry!==".")&&($entry!==".."))   
        {   
             if(is_dir($source."/".$entry))   
             {   
                 if($child)   
                copydir_recurse($source."/".$entry,$destination.
"/".$entry,$child);   
                deldirs($destination."/".$entry); //删除空文件夹
            }   
            else  
            {   
                 $arr_file[$source."/".$entry]=$entry;   
            }   
        }   
    }   
return $arr_file;   
}   
//$arr_file=copydir_recurse('D:\wamp\tmp','E:\dir',1);     
/**  
 *批量拷贝目录(包括子目录)下所有文件到一个文件夹下;  
 *   
 *用法:  
 $arr_file这个数组是从 copydir_recurse中得到的;  
 copy_only_file($arr_file,'E:\dir')  
 * 参数说明:  
 * $file_arr:文件数组,键名为包含原文件夹下的所有文件路经,键值为目录文件名;
 * $aim_dir:目标目录名  
*/  
       
 function copy_only_file($arr_file,$aim_dir){   
     foreach($arr_file as $key=> $value){   
        if(is_dir($value))   
        deldirs($value);//删除空目录   
        copy($key,$aim_dir.'\ '.$value);  
} }  
//copy_only_file($arr_file,'E:\dir')   
 ?>
标签:

给我留言