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 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
php 显示指定路径下的图片
Oct 29 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
php中日期加减法运算实现代码
Dec 08 PHP
php的array_multisort()使用方法介绍
May 16 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
php事件驱动化设计详解
Nov 10 PHP
php连接mysql数据库最简单的实现方法
Sep 24 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中的PDO类
2015/07/06 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
浅析Python中的序列化存储的方法
2015/04/28 Python
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python验证码识别实例代码
2018/02/03 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
PyQt5响应回车事件的方法
2019/06/25 Python
Python用Jira库来操作Jira
2020/12/28 Python
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
一个大学生十年的职业规划
2014/01/17 职场文书
安全演讲稿大全
2014/05/09 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
教育实习指导教师评语
2014/12/31 职场文书
升学宴答谢词
2015/01/05 职场文书
春秋淹城导游词
2015/02/11 职场文书
甲午风云观后感
2015/06/02 职场文书
关于运动会的广播稿
2015/08/19 职场文书
Python Parser的用法
2021/05/12 Python
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers