加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php 合并两个目录及目录中的文件

发布时间:2020-05-25 02:08:01 所属栏目:PHP 来源:互联网
导读:本文章向大家分享一个php合并目录及目录中文件的函数,该函数主要使用了文件处理函数is_dir、is_file、file_exists、file_get_contents、basename以及copy函数,需要的朋友可以参考一下。

函数源代码如下:

$source = 'D:/source/';

$target = 'D:/target/';

echo copy_merge ( $source,$target );

/**

* 合并目录

* @param $source 要合并的文件夹

* @param $target 要合并的目的地

* @return int 处理的文件数

*/

function copy_merge($source,$target) {

// 路径处理

$source = preg_replace ( '#/#',DIRECTORY_SEPARATOR,$source );

$target = preg_replace ( '#/#',$target );

$source = rtrim ( $source,DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR;

$target = rtrim ( $target,DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR;

// 记录处理了多少文件

/* http://www.manongjc.com/article/1302.html */

$count = 0;

// 如果目标目录不存在,则创建。

if (! is_dir ( $target )) {

mkdir ( $target,0777,true );

$count ++;

}

// 搜索目录下的所有文件

foreach ( glob ( $source . '*' ) as $filename ) {

if (is_dir ( $filename )) {

// 如果是目录,递归合并子目录下的文件。

$count += copy_merge ( $filename,$target . basename ( $filename ) );

} elseif (is_file ( $filename )) {

// 如果是文件,判断当前文件与目标文件是否一样,不一样则拷贝覆盖。

// 这里使用的是文件md5进行的一致性判断,可靠但性能低,应根据实际情况调整。

if (! file_exists ( $target . basename ( $filename ) ) || md5 ( file_get_contents ( $filename ) ) != md5 ( file_get_contents ( $target . basename ( $filename ) ) )) {

copy ( $filename,$target . basename ( $filename ) );

$count ++;

}

}

}

// 返回处理了多少个文件

return $count;

}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读