A是主程序文件夹(文件多齐全),文件齐全。B中文件夹内文件出现异常(网站运行的程序文件),现在需要把B文件夹内的异常文件替换掉。
可以使用PHP的scandir()
函数遍历文件夹中的文件,然后使用file_exists()
函数判断文件是否存在,如果存在,则可以使用copy()
函数将文件从A文件夹复制到C文件夹。
具体实现代码如下:
function compareFolders($folderA, $folderB, $folderC) {
$filesA = scandir($folderA);
$filesB = scandir($folderB);
// 遍历文件夹A中的文件
foreach ($filesA as $fileA) {
if ($fileA != '.' && $fileA != '..') {
$pathA = $folderA . '/' . $fileA;
$pathC = $folderC . '/' . $fileA;
// 如果文件夹B中不存在该文件,则复制到文件夹C
if (!in_array($fileA, $filesB)) {
copy($pathA, $pathC);
} else {
// 如果文件夹B中存在该文件,则比较文件内容是否相同
$pathB = $folderB . '/' . $fileA;
if (md5_file($pathA) != md5_file($pathB)) {
copy($pathA, $pathC);
}
}
}
}
}
在上面的代码中,首先使用scandir()
函数遍历文件夹A和文件夹B中的文件,并使用in_array()
函数判断文件夹B中是否存在该文件。如果文件夹B中不存在该文件,则使用copy()
函数将文件从文件夹A复制到文件夹C。
如果文件夹B中存在该文件,则使用md5_file()
函数比较文件内容是否相同,如果不同,则将文件从文件夹A复制到文件夹C。
使用示例:
$folderA = 'path/to/folderA';
$folderB = 'path/to/folderB';
$folderC = 'path/to/folderC';
compareFolders($folderA, $folderB, $folderC);
其中,$folderA
为待比较的文件夹A,$folderB
为对比的文件夹B,$folderC
为结果保存的文件夹C。