php复制目录下的所有文件及文件夹
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php复制目录下的所有文件及文件夹相关的知识,希望对你有一定的参考价值。
比如网站根目录下有一个文件夹a,文件夹a中又有多个文件及子文件夹,而这些子文件夹中可能还有多重子文件夹,那么如果我想把文件夹a中的所有文件及多重子文件夹全部复制到根目录下的b文件夹中,要怎么做呢?
换种方法说吧,根目录下有文件夹a,文件夹a中有文件a1.xxx,a2.xxx,a
3.xxx等文件及a4,a5,a6,a7等文件夹,而a4中有a4a,a4b,a4c等文件及a4d,a5d,a6d等文件夹,而a4d,a5d,a6d文件夹中可能还有其他子文件夹。a5,a6,a7也是这样
现在根目录下有一个文件夹b,怎么才能把a中的所有文件及文件夹全部复制到b中呢?
function recurse_copy($src,$dst) // 原目录,复制到的目录
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) )
if (( $file != '.' ) && ( $file != '..' ))
if ( is_dir($src . '/' . $file) )
recurse_copy($src . '/' . $file,$dst . '/' . $file);
else
copy($src . '/' . $file,$dst . '/' . $file);
closedir($dir);
参考技术A php复制文件夹及下面所有文件,参考如下:
function xCopy($source, $destination, $child)
//用法:
// xCopy("feiy","feiy2",1):拷贝feiy下的文件到 feiy2,包括子目录
// xCopy("feiy","feiy2",0):拷贝feiy下的文件到 feiy2,不包括子目录
//参数说明:
// $source:源目录名
// $destination:目的目录名
// $child:复制时,是不是包含的子目录
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)
xCopy($source."/".$entry,$destination."/".$entry,$child);
else
copy($source."/".$entry,$destination."/".$entry);
return 1;
?> 参考技术B 遍历某文件夹下的所有文件和文件夹,并且把所以匹配的文件复制到同一目录。
$dir="/www/pooy/baike";
static $dir_list =0;
static $file_list =0;
function listfile($dir)
global $dir_list,$file_list;
$d = dir($dir);
while ( $entry = $d->read())
$tem_curnt=$dir."/".$entry;
//echo $tem_curnt."<br>";
if($entry=="." || $entry=="..") continue;
if ( is_dir( $tem_curnt))
listfile($tem_curnt);
echo "文件夹 ".$tem_curnt."<br>";
$dir_list++;
elseif ( is_file($tem_curnt))
echo "文件".$tem_curnt."<BR>";
_copy($tem_curnt,"/www/pooy/bk");
$file_list++;
$d->close();
function _copy($src, $dst)
if ( ! is_dir($src))
if ( ! copy($src, $dst))
return _log('Unable to copy files', $src);
else
mkdir($dst);
$ls = scandir($src);
for ($i = 0; $i < count($ls); $i++)
if ($ls[$i] == '.' OR $ls[$i] == '..') continue;
$_src = $src.'/'.$ls[$i];
$_dst = $dst.'/'.$ls[$i];
if ( is_dir($_src))
if ( ! _copy($_src, $_dst))
return _log('Unable to copy files', $_src);
else
if ( ! copy($_src, $_dst))
return _log('Unable to copy files', $_src);
return TRUE;
listfile($dir);
echo "目录数:".$dir_list;
echo"<br>";
echo"文件数:".$file_list;
上一页:PHP时间戳和日期相互转换 下一页:PHP中生成横状百分比图片实例
相关内容
2014.10.10python获取某目录下的所有文件和子目录-os.listdir
2014.07.17python中批量移动目录所有文件函数
2014.07.09PHP自定义遍历目录下所有文件dir(),readdir()函数
2013.12.17php读取指定目录文件夹下所有文件名
2013.05.31python读取指定目录下所有文件
2012.12.20PHP unlink与rmdir删除目录及目录下所有文件
2012.03.15php批量替换内容或指定目录下所有文件内容
2011.04.08php 获取目录下所有文件实现代码
2010.10.21php 目录列出所有文件
2010.10.09php递归删除目录所有文件
PHP如何读出当前目录下所有文件?
参考技术A 一般来说php中读取目录下的文件名的方式确实不少,最简单的是scandir,具体代码如下:\\x0d\\x0a 复制代码 代码如下:$dir="./caxa/";\\x0d\\x0a $file=scandir($dir);\\x0d\\x0a print_r($file);\\x0d\\x0a 稍微复杂点的,来自于php手册:\\x0d\\x0a 复制代码 代码如下:$dir = "/etc/php5/";\\x0d\\x0a // Open a known directory, and proceed to read its contents\\x0d\\x0a if (is_dir($dir)) \\x0d\\x0a if ($dh = opendir($dir)) \\x0d\\x0a while (($file = readdir($dh)) !== false) \\x0d\\x0a echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";\\x0d\\x0a closedir($dh);\\x0d\\x0a \\x0d\\x0a \\x0d\\x0a 这些都只能读取当前指定目录下的文件,对子目录中的文件则无法读取。原来自己写过一个循环删除所有目录的一段代码,需要逐个子目录删除所有文件,包括多层。但是只需要读出文件名,稍微复杂点,网上找到一个能用,原始代码有错误提示,改了一下引用&$data的地方,如下所示:\\x0d\\x0a 复制代码 代码如下:function searchDir($path,&$data)\\x0d\\x0a if(is_dir($path))\\x0d\\x0a $dp=dir($path);\\x0d\\x0a while($file=$dp->read())\\x0d\\x0a if($file!=\'.\'&& $file!=\'..\')\\x0d\\x0a searchDir($path.\'/\'.$file,$data);\\x0d\\x0a \\x0d\\x0a \\x0d\\x0a $dp->close();\\x0d\\x0a \\x0d\\x0a if(is_file($path))\\x0d\\x0a $data[]=$path;\\x0d\\x0a \\x0d\\x0a \\x0d\\x0a function getDir($dir)\\x0d\\x0a $data=array();\\x0d\\x0a searchDir($dir,$data);\\x0d\\x0a return $data;\\x0d\\x0a \\x0d\\x0a print_r(getDir(\'.\'));\\x0d\\x0a 希望本文所述对大家的PHP程序设计有所帮助。以上是关于php复制目录下的所有文件及文件夹的主要内容,如果未能解决你的问题,请参考以下文章
php如何复制文件和子文件夹中的文件到指定目录,保持路径顺序不变