遍历文件夹下所有文件有两种方法
备注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);