函数源代码如下:
$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 ( \'#\\/#\', DIRECTORY_SEPARATOR, $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 . name ( $filename ) );
} elseif (is_file ( $filename )) {
// 如果是文件,判断当前文件与目标文件是否一样,不一样则拷贝覆盖。
// 这里使用的是文件md5进行的一致性判断,可靠但性能低,应根据实际情况调整。
if (! file_exists ( $target . name ( $filename ) ) || md5 ( file_get_contents ( $filename ) ) != md5 ( file_get_contents ( $target . name ( $filename ) ) )) {
copy ( $filename, $target . name ( $filename ) );
$count ++;
}
}
}
// 返回处理了多少个文件
return $count;
} 继续阅读与本文标签相同的文章
上一篇 :
苹果跳级 直接推出iOS 13.1开发者测试版
-
PS保存图片提示“无法完成请求”,这里有4种解决方法!
2026-05-14栏目: 教程
-
想买1000元左右的5G手机?我们需要等多久?
2026-05-14栏目: 教程
-
剧情反转?美企主动购买华为5G技术,华为成赞赏排行榜第一名!
2026-05-14栏目: 教程
-
城市数字化后,新一代内生安全系统可全方位保护
2026-05-14栏目: 教程
-
谷歌也来“唱衰”5G,5G手机只会徒增功耗?为何这么说?
2026-05-14栏目: 教程
