遍歷文件夾下所有文件有兩種方法
備註p爲打印函數相當於print_r(),var_dump()的友好輸出
第一種:
//遍歷文件夾下所有文件和目錄
//opendir():將目錄下的文件已資源的形式保存 //readir():讀取資源下的文件或目錄$dir = "./file";
function for_dir($dir){
if(!is_dir($dir)){
return false;
} $file=opendir($dir);
if($file){
while(($fname=readdir($file))!==false){
$temp=$dir.'/'.$fname;
if(is_dir($temp)&&$fname!='.'&& $fname!='..'){
p('目錄:'.$temp);
for_dir($temp);
}else if(!is_dir($temp)){
if($fname!='.'&& $fname!='..'){
p('文件:'.$temp);
}
}
}
}
}
for_dir($dir);
第二種
//scandir()將當前目錄下所有文件與文件夾以數組的形式列出來 $dir=__DIR__; function second_dir($test){ $test=scandir($test); if(!$test){ return false; } foreach($test as $fname){ $temp=__DIR__.'\\'.$fname; if(is_dir($temp)&& $fname!='.'&&$fname!='..'){ p('目錄'.$temp); second_dir($temp); }else{ if($fname!='.'&&$fname!='..'){ p('文件'.$temp); } } } } second_dir($dir);
遞歸刪除空目錄如果這個會了上面的遍歷就是小菜
a是一個目錄,目錄下可以建立多個文件夾和文件可套無限層,我測試到3層,大神們可以測試提意見謝謝
rmdir()只能刪除空目錄;
$dir='./a'; function del_dir($dir){ if(!is_dir($dir)){return false;} $test=scandir($dir); if(count($test)==2){//等於2的目的是scandir函數將目錄以數組形式打開,如果只等於2就證明目錄下只有'.'和'..' rmdir($dir); } foreach($test as $fname){ $temp=$dir.'\\'.$fname; $dirname=dirname($temp); if(is_dir($temp) && $fname!='.'&& $fname!='..'){ if(count(scandir($temp))==2){//數組長度等於2證明是空文件夾 if(rmdir($temp)){ p($temp);p($dirname); del_dir($dirname); } } del_dir($temp); } } } del_dir($dir);