相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁查詢功能的方法示例
- PHP中單雙號與變量
- PHP獲得當(dāng)日零點(diǎn)時間戳的方法分析
- Laravel ORM對Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時進(jìn)度條顯示的實(shí)現(xiàn)
PHP遞歸遍歷指定文件夾內(nèi)的文件實(shí)現(xiàn)方法
今天早上在地鐵上看了關(guān)于文件和文件夾的一章,正好最近剛搞懂linux的文件系統(tǒng),覺得對文件屬性的訪問跟Shell命令很像,所以想晚上來實(shí)踐一下。
發(fā)現(xiàn)php的文件夾函數(shù)好像沒有提供遍歷文件夾下的所有文件(包括子目錄中的文件),于是,就想自己實(shí)現(xiàn)一個。
在寫的時候發(fā)現(xiàn)一些操作文件夾的函數(shù)并不是自己想的那樣。比如,dirname()根據(jù)提供的完整文件路徑來取得文件所在的文件夾的路徑,但如果你傳入的是文件夾,它取的就是它的父文件夾。這點(diǎn)要明白。basename()也是同樣的道理,傳入文件夾路徑取得就是文件夾的名字。這兩個函數(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),無需手動設(shè)置 *@return 無 */ 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); }