php 合并两个目录及目录中的文件
时间:2016-08-03
本文章向大家分享一个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 ( '#\/#', 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 . 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;
}
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 15.selenium_case03
- [已解决]报错: ["Department":"??????????","Addr":"?????????????690???????"]
- 例16数字判断
- selector的使用
- Python获取xml数据
- Scrapy项目实战:爬取某社区用户详情
- 获取后缀名的文件
- [未解决]报错:requests post请求无法返回数据
- AkShare-股票数据-注册制审核
- tkinter的简单应用
- [已解决]报错: airtest PermissionError: [Errno 13] Permission denied
- LeetCode SQL
- 燕十八mysql复习
- 15.selenium_case04
- 16.ajax_case01