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如何复制文件和子文件夹中的文件到指定目录,保持路径顺序不变

PHP显示指定目录下的所有目录及文件

PHP删除当前目录及其目录下的所有文件

php 循环遍历文件夹下面的所有目录及文件并且每个文件都写入一句话

PHP复制文件夹及文件夹内的文件

php写一个函数,能够遍历一个文件夹下的所有文件和子文件夹