遍历一个文件夹下的所有文件和子文件夹

昨天面试的时候遇到了这个题目,没有做出来,因为我不知道用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';
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值