PHP遞歸遍歷指定文件夾內(nèi)的文件實(shí)現(xiàn)方法
今天早上在地鐵上看了關(guān)于文件和文件夾的一章,正好最近剛搞懂linux的文件系統(tǒng),覺(jué)得對(duì)文件屬性的訪問(wèn)跟Shell命令很像,所以想晚上來(lái)實(shí)踐一下。
發(fā)現(xiàn)php的文件夾函數(shù)好像沒(méi)有提供遍歷文件夾下的所有文件(包括子目錄中的文件),于是,就想自己實(shí)現(xiàn)一個(gè)。
在寫(xiě)的時(shí)候發(fā)現(xiàn)一些操作文件夾的函數(shù)并不是自己想的那樣。比如,dirname()根據(jù)提供的完整文件路徑來(lái)取得文件所在的文件夾的路徑,但如果你傳入的是文件夾,它取的就是它的父文件夾。這點(diǎn)要明白。basename()也是同樣的道理,傳入文件夾路徑取得就是文件夾的名字。這兩個(gè)函數(shù)返回的結(jié)果結(jié)尾都不加'/'
<?php $dirPath='/home/WWW/Test';//目錄,結(jié)尾不加'/‘ //執(zhí)行遍歷 recursion_readdir($dirPath); /** *@summary 重復(fù)times次字符char *@param $char 需要重復(fù)的字符 *@param $times 重復(fù)次數(shù) *@return 返回重復(fù)字符組成的字符串 */ function forChar($char='-',$times=0){ $result=''; for($i=0;$i<$times;$i++){ $result.=$char; } return $result; } /** *@summary 遞歸讀取目錄 *@param $dirPath 目錄 *@param $Deep=0 深度,用于縮進(jìn),無(wú)需手動(dòng)設(shè)置 *@return 無(wú) */ function recursion_readdir($dirPath,$Deep=0){ $resDir=opendir($dirPath); while($basename=readdir($resDir)){ //當(dāng)前文件路徑 $path=$dirPath.'/'.$basename; if(is_dir($path) AND $basename!='.' AND $basename!='..'){ //是目錄,打印目錄名,繼續(xù)迭代 echo forChar('-',$Deep).$basename.'/<br/>'; $Deep++;//深度+1 recursion_readdir($path,$Deep); }else if(basename($path)!='.' AND basename($path)!='..'){ //不是文件夾,打印文件名 echo forChar('-',$Deep).basename($path).'<br/>'; } } closedir($resDir); }
以上這篇PHP遞歸遍歷指定文件夾內(nèi)的文件實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- php遍歷目錄下文件并按修改時(shí)間排序操作示例
- PHP超低內(nèi)存遍歷目錄文件和讀取超大文件的方法
- php實(shí)現(xiàn)遍歷文件夾的方法匯總
- PHP遍歷目錄文件的常用方法小結(jié)
- php 遍歷目錄,生成目錄下每個(gè)文件的md5值并寫(xiě)入到結(jié)果文件中
- 遍歷指定目錄,并存儲(chǔ)目錄內(nèi)所有文件屬性信息的php代碼
- PHP目錄與文件操作技巧總結(jié)(創(chuàng)建,刪除,遍歷,讀寫(xiě),修改等)
- PHP遞歸遍歷指定目錄的文件并統(tǒng)計(jì)文件數(shù)量的方法
- PHP動(dòng)態(tài)地創(chuàng)建屬性和方法, 對(duì)象的復(fù)制, 對(duì)象的比較,加載指定的文件,自動(dòng)加載類文件,命名空間
- PHP實(shí)現(xiàn)的文件瀏覽器功能簡(jiǎn)單示例
相關(guān)文章
PHP實(shí)現(xiàn)登錄驗(yàn)證碼校驗(yàn)功能
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)驗(yàn)證碼校驗(yàn)功能,主要是利用PHP中的 SESSION功能來(lái)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05PHP網(wǎng)頁(yè)游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(九)
這篇文章主要介紹了PHP網(wǎng)頁(yè)游戲Xnova(ogame)源碼解讀的艦隊(duì)相關(guān)函數(shù)部分,需要的朋友可以參考下2014-06-06tp5.1 框架數(shù)據(jù)庫(kù)-數(shù)據(jù)集操作實(shí)例分析
這篇文章主要介紹了tp5.1 框架數(shù)據(jù)庫(kù)-數(shù)據(jù)集操作,結(jié)合實(shí)例形式分析了tp5.1 框架數(shù)據(jù)庫(kù)查詢結(jié)果數(shù)據(jù)集獲取、遍歷相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2020-05-05php下載遠(yuǎn)程大文件(獲取遠(yuǎn)程文件大小)的實(shí)例
下面小編就為大家?guī)?lái)一篇php下載遠(yuǎn)程大文件(獲取遠(yuǎn)程文件大小)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06深入探討:Nginx 502 Bad Gateway錯(cuò)誤的解決方法
本篇文章是對(duì)Nginx 502 Bad Gateway錯(cuò)誤的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06詳解php實(shí)現(xiàn)頁(yè)面靜態(tài)化原理
本篇文章主要介紹了詳解php實(shí)現(xiàn)頁(yè)面靜態(tài)化原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06ThinkPHP5+Layui實(shí)現(xiàn)圖片上傳加預(yù)覽功能
這篇文章主要介紹了ThinkPHP5+Layui實(shí)現(xiàn)圖片上傳加預(yù)覽功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08