国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

php比較兩個(gè)文件夾的差異

2024-04-25 20:31:53
字體:
供稿:網(wǎng)友

要求:
只能使用命令行,比較兩個(gè)文件夾的不同,包括文件的差異。

思考:
雖然linux下有diff。。。。還是用php吧,代碼改的方便,速度也很快,以下排除了.svn目錄的比較
文件要比較md5校驗(yàn)和

思路:
1)把第一路徑作為標(biāo)準(zhǔn)路徑,列出第1個(gè)路徑中有的,第2個(gè)路徑中沒有的文件或文件夾,或者是不同的文件。
2)然后,列出第2個(gè)路徑中有的,第1個(gè)路徑中卻不存在的文件和文件夾。

調(diào)用示例:
php compare_folder.php /home/temp/2 /home/temp/55
//轉(zhuǎn)載自JAVAEYE

源碼:

<?php

/**

*工具文件

*目的在于遞歸比較兩個(gè)文件夾

*

*調(diào)用示例

*phpcompare_folder.php/home/temp/2/home/temp/55

*

*/

//參數(shù)確定

if(count($argv)>1)

$dir1=del_postfix($argv[1]);

else

$dir1='/';

if(count($argv)>2)

$dir2=del_postfix($argv[2]);

else

$dir2='/';

//檢查第一個(gè)路徑有,后者沒有或錯(cuò)誤的方法。

process_compare($dir1,$dir2,0);

echo"===========================================================/n";

//檢查第2個(gè)路徑的多余文件夾或文件

process_compare($dir2,$dir1,1);

echo"allOK/n";

/**

*去除路徑末尾的/,并確保是絕對(duì)路徑

*

*@paramunknown_type$dir

*@returnunknown

*/

functiondel_postfix($dir)

{

if(!preg_match('#^/#',$dir)){

thrownewException('參數(shù)必須是絕對(duì)路徑');

}

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

return$dir;

}

/**

*公用函數(shù),會(huì)調(diào)用一個(gè)遞歸方法實(shí)現(xiàn)比較

*

*@paramstring$dir1作為標(biāo)準(zhǔn)的路徑

*@paramstring$dir2對(duì)比用的路徑

*@paramint$only_check_has為1表示不比較文件差異,為0表示還要比較文件的md5校驗(yàn)和

*/

functionprocess_compare($dir1,$dir2,$only_check_has){

compare_file_folder($dir1,$dir1,$dir2,$only_check_has);

}

/**

*真實(shí)的函數(shù),私有函數(shù)

*

*@paramstring$dir1路徑1,是標(biāo)準(zhǔn)

*@paramstring$base_dir1不變的參數(shù)路徑2

*@paramstring$base_dir2不變的待比較的路徑2

*@paramint$only_check_has為1表示不比較文件差異,為0表示還要比較文件的md5校驗(yàn)和

*

*/

functioncompare_file_folder($dir1,$base_dir1,$base_dir2,$only_check_has=0){

if(is_dir($dir1)){

$handle=dir($dir1);

if($dh=opendir($dir1)){

while($entry=$handle->read()){

if(($entry!=".")&&($entry!="..")&&($entry!=".svn")){

$new=$dir1."/".$entry;

//echo'compare:'.$new."/n";

$other=preg_replace('#^'.$base_dir1.'#',$base_dir2,$new);

if(is_dir($new)){

//比較

if(!is_dir($other)){

echo'!!notfounddirection:'.$other.'('.$new.")/n";

}

compare_file_folder($new,$base_dir1,$base_dir2,$only_check_has);

}else{//如果1是文件,則2也應(yīng)該是文件

if(!is_file($other)){

echo'!!notfoundfile:'.$other.'('.$new.")/n";

}elseif($only_check_has==0&&(md5_file($other)!=md5_file($new))){

echo'!!filemd5error:'.$other.'('.$new.")/n";

}

}

}

}

closedir($dh);

}

}

}

?>

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蕲春县| 斗六市| 涡阳县| 西昌市| 双辽市| 偃师市| 怀安县| 九龙城区| 西昌市| 富宁县| 周至县| 潼关县| 东源县| 义马市| 阳谷县| 锡林郭勒盟| 颍上县| 盱眙县| 白山市| 中牟县| 策勒县| 雷山县| 秦皇岛市| 璧山县| 延川县| 桃江县| 兴文县| 芷江| 高邮市| 沙雅县| 广宁县| 晋江市| 晴隆县| 萍乡市| 清水河县| 蚌埠市| 舞阳县| 阜宁县| 宁河县| 宁安市| 福安市|