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利用cookie实现访问次数统计代码
May 19 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
php 使用GD库为页面增加水印示例代码
Mar 24 PHP
DOM基础及php读取xml内容操作的方法
Jan 23 PHP
浅谈php提交form表单
Jul 01 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 PHP
php通过header发送自定义数据方法
Jan 18 PHP
phpstorm 配置xdebug的示例代码
Mar 31 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+jQuery实现自动补全功能源码
2013/05/15 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
bootstrap table实例详解
2017/01/06 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
Python深入学习之内存管理
2014/08/31 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
质检员的岗位职责
2013/11/15 职场文书
会计电算化专业毕业生自荐信
2013/12/20 职场文书
预备党员转正考核材料
2014/06/03 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技