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 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
php获取apk包信息的方法
Aug 15 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 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
php简单封装了一些常用JS操作
2007/02/25 PHP
PHP 图片上传代码
2011/09/13 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python实现不规则图形填充的思路
2020/02/02 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
中专自荐信
2013/10/13 职场文书
实习自我鉴定范文
2013/10/30 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
2014年工程师工作总结
2014/11/25 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
中秋节寄语2015
2015/03/24 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python
Spring Boot实现文件上传下载
2022/08/14 Java/Android