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 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
PHP生成静态页面详解
Dec 05 PHP
php之字符串变相相减的代码
Mar 19 PHP
表单复选框向PHP传输数据的代码
Nov 13 PHP
php md5下16位和32位的实现代码
Apr 09 PHP
php 8小时时间差的解决方法小结
Dec 22 PHP
PHP 魔术函数使用说明
May 14 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
php实现微信公众号企业转账功能
Oct 01 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
长波有什么东西
2021/03/01 无线电
如何利用php+mysql保存和输出文件
2006/10/09 PHP
也谈截取首页新闻 - 范例
2006/10/09 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
又一枚精彩的弹幕效果jQuery实现
2016/07/25 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python模块的制作方法实例分析
2019/12/21 Python
Python如何读取文件中图片格式
2020/01/13 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
车间调度岗位职责
2013/11/30 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
小学生作文评语集锦
2014/12/25 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android