PHP递归复制、移动目录的自定义函数分享


Posted in PHP onNovember 18, 2014

虽然复制一个目录是文件操作的基本功能。但PHP中也没有给出特定的函数,同样需要自定义一个递归函数实现。要复制一个包含多个子目录的目录,将涉及文件的复制、目录创建等操作。复制一个文件可以通过PHP提供的copy()函数完成,创建目录可以使用mkdir()函数。定义函数时,首先对源目录进行遍历,如果遇到的是普通文件,直接使用copy()函数进行复制。如果遍历时遇到一个目录,则必须建立该目录,然后再对该目录下的文件进行复制操作,如果还有子目录,则使用递归重复操作,最终将整个目录复制完成。自定义的递归函数复制目录的程序代码如下所示:

<?php

//自定义函数递归的复制带有多级子目录的目录

function copyDir($dirSrc,$dirTo){

    if(is_file($dirTo)){      //如果目标不是一个目录则退出

        echo "目标不是目录不能创建!!";

        return; //退出函数

    }

    if(!file_exists($dirTo)){       //如果目标不是一个目录则退出

       mkdir($dirTo);              //创建目录

    }

 

    if($dir_handle = @opendir($directory)){         //打开目录,并判断是否能成功打开

        while($filename = readdir($dir_handle)){          //循环遍历目录下的所有文件

            if($filename != "."&& $filename != ".."){          //一定要排除两个特殊的目录

               $subFile = $directory."/".$filename;          //将目录下的子文件和当前目录相连

               $sunToFile = $dirTo."/".$filename;          //将目标目录的多级子目录相连

               if(is_dir($subSrcFile))          //如果为目录则条件成立

                   copyDir($subSrcFile,$subToFile);          //递归调用自己复制子目录

               if(is_file($subSrcFile))          //如果是文件则条件成立

                   copy($subSrcFile,$subToFile);          //直接复制到目标位置

            }

        }

        losedir($dir_handle);          //关闭文件资源

     }

}

 

//测试函数,将目录“phpMyAdmin”复制到“D:/admin”

copyDir("phpMyAdmin","D:/admin");

?>

从安全和跨平台等方面考虑,尽量不要去调用操作系统的SHELL命令“cp-a”完成目录的复制。

PHP 相关文章推荐
PHP 高手之路(一)
Oct 09 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
Oct 29 PHP
PHP读取txt文件的内容并赋值给数组的代码
Nov 03 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
PHP中的use关键字概述
Jul 23 PHP
学习php中的正则表达式
Aug 17 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP上传文件及图片到七牛的方法
Jul 25 PHP
PHP打开和关闭文件操作函数总结
Nov 18 #PHP
PHP文件读写操作相关函数总结
Nov 18 #PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 #PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 #PHP
PHP文件锁函数flock()详细介绍
Nov 18 #PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 #PHP
PHP操作文件的一些基本函数使用示例
Nov 18 #PHP
You might like
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
Python3搜索及替换文件中文本的方法
2015/05/22 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
is_file和file_exists效率比较
2021/03/14 PHP
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
大学生毕业求职自荐书范文
2014/02/04 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
入党自荐书范文
2015/03/05 职场文书
工作时间调整通知
2015/04/24 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
DE1107机评
2022/04/05 无线电
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis