遍历一个文件夹下的所有文件和子文件夹
昨天面试的时候遇到了这个题目,没有做出来,因为我不知道用PHP访问文件夹下文件的函数。
?
思路:要说算法的话,这题其实并不难。获取文件夹下的子文件,如果是文件就输出,如果是文件夹,输出之后继续深入搜索。用个递归就行了。
?
需要用到的方法:
is_dir($path) 判断是否是一个文件夹
opendir($path)打开文件夹
readdir($dir)依次读取文件夹下的文件
filetype($file)文件的属性,有dir和file两种
?
function listdirfiles($p){ //先检查$p是不是一个文件夹 if(is_dir($p)){ //依次读取文件夹下的子文件 $dir = opendir($p); while(($file = readdir($dir))!==false){ //注意file的type,有file和dir两种,而dir要注意,在linux下,.和..也是属于dir的,如果不进行排除,会发生无限次循环的问题。 $type = filetype($p.$file); if($type=='dir'&&$file!='.'&&$file!='..'){ listdirfiles($p.$file.'/'); } echo $file.' '; } //用完要记得关闭 closedir($dir); }else{ echo 'The path is not a dir'; }}?