您所在的位置:小祥子 » 编程 » PHP » 正文

php读取目录并列表显示目录中的文件的函数

时间:2015-01-26 编辑:佚名 来源:互联网

/*
* param string $dir 目录名称
* return array $dirList 查询结果数组
*/

function listDir($dir){
 if(!file_exists($dir)||!is_dir($dir)){
  return '';
 }
 $dirList=array('dirNum'=>0,'fileNum'=>0,'lists'=>'');
 $dir=opendir($dir);
 $i=0;
 while($file=readdir($dir)){
  if($file!=='.'&&$file!=='..'){
   $dirList['lists'][$i]['name']=$file;
   if(is_dir($file)){
    $dirList['lists'][$i]['isDir']=true;
    $dirList['dirNum']++;
   }else{
    $dirList['lists'][$i]['isDir']=false;
    $dirList['fileNum']++;
   }
   $i++;
  };
 };
 closedir($dir);
 return $dirList;
};
具体用法如下,比如需要查询目录 D:\PHPnow-1.5.6\htdocs 下的文件以及目录列表,则:
echo '<pre>';
print_r(listDir('D:\PHPnow-1.5.6\htdocs'));
说明:
 
在这段代码中主要使用了PHP目录函数opendir(),readdir(),closedir(),下面分别进行解释一下:
 
1、opendir函数用来打开所游览的具体目录,函数参数为目录名,注意,如果PHP执行文件和浏览的主目录处在同一级,则传递的参数可以仅仅只是目录名,如果不在同一级或读取多级目录时,需带上具体的目录路径或文件路径。
 
2、在通过opendir函数读取了主目录后,通过while循环来进一步读取主目录下的多级目录及文件,此处使用的PHP目录函数为readdir,此函数从目录中读取目录或文件名,当没有可读取的目录或文件时,返回False,注意,读取的目录包含.和..,在本实例教程中由于是一级级往下读取目录,所以当读取的目录信息为.和..时跳出本次循环,继续读取下一级目录。
 
 3、在读取完主目录的所有子目录及文件后,通过PHP目录函数closedir来关闭目录句柄,类似于fclose函数关闭文件。