PHP-递归扫描目录和删除目录
(1) 通過(guò)遞歸掃描目錄并打印
需要注意的地方:
①在讀取目錄的時(shí)候,會(huì)讀取.和..,分別表示當(dāng)前目錄和上一級(jí)目錄,需要過(guò)濾掉它們以進(jìn)行后續(xù)的打印和操作。
②中文操作系統(tǒng)默認(rèn)的編碼是gbk,因此目錄與文件的編碼為gbk。想要在網(wǎng)頁(yè)上顯示的時(shí)候沒(méi)有亂碼,需要通過(guò)iconv函數(shù)進(jìn)行轉(zhuǎn)碼。
③這一份代碼是用無(wú)序列表來(lái)顯示目錄結(jié)構(gòu)的。還有一種辦法:可以添加一個(gè)遞歸深度$deep作為函數(shù)的參數(shù),默認(rèn)為0,每一次遞歸加1。這樣不同的層級(jí)就擁有了不同的遞歸深度,通過(guò)str_repeat()函數(shù)來(lái)利用遞歸深度,就能讓目錄結(jié)構(gòu)分出層次了。
(2) 通過(guò)遞歸刪除目錄及目錄下的文件
?
// php遞歸刪除目錄和文件 function delAll($path){// 打開(kāi)目錄$dh = opendir($path);// 循環(huán)讀取目錄while(($file = readdir($dh)) !== false){// 過(guò)濾掉當(dāng)前目錄'.'和上一級(jí)目錄'..'if($file == '.' || $file == '..') continue;// 如果該文件是一個(gè)目錄,則進(jìn)入遞歸if(is_dir($path.'/'.$file)){delAll($path.'/'.$file);} else {// 如果不是一個(gè)目錄,則將其刪除unlink($path.'/'.$file);}}// 退出循環(huán)后(此時(shí)已經(jīng)刪除所有了文件),關(guān)閉目錄并刪除closedir($dh);rmdir($path); } $path = './test'; delAll($path);?
需要注意的一點(diǎn)是:只有當(dāng)這個(gè)目錄不是工作狀態(tài)的時(shí)候,才能進(jìn)行刪除。所以必須要先通過(guò)closedir()關(guān)閉目錄,并且確保在計(jì)算機(jī)中也退出了該目錄,再進(jìn)行刪除的操作。
?
轉(zhuǎn)載于:https://www.cnblogs.com/mozshaw/p/5372895.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的PHP-递归扫描目录和删除目录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 做梦梦到发卡是什么意思
- 下一篇: 夺命雷公狗ThinkPHP项目之----