A-A+
php批量复制指定所有目录下的文件到一个文件夹下
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')
?>