php 合并两个目录及目录中的文件
|
函数源代码如下: $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; } (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
