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中数据的批量导入(csv文件)
Oct 09 PHP
php 三维饼图的实现代码
Sep 28 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
php实现下载限制速度示例分享
Feb 13 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
php支持断点续传、分块下载的类
May 02 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
PHP获取真实客户端的真实IP
Mar 07 PHP
php快速导入大量数据的实例方法
Sep 23 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 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/04 无线电
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
Python正则表达式教程之一:基础篇
2017/03/02 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
用Python读取几十万行文本数据
2018/12/24 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
Python如何将字符串转换为日期
2020/07/31 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
北承题目(C++)
2012/05/16 面试题
应届生骨科医生求职信
2013/10/31 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
创新比赛获奖感言
2014/02/13 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
给老师的一封感谢信
2015/01/20 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
react中的DOM操作实现
2021/06/30 Javascript