使用递归遍历指定文件目录及其子目录下的所有文件
思路:
1.打开目录;
2.遍历目录,判断是否还是目录。是目录则返回第1步,不是目录进入第三步;
3.把文件名显示出来
使用到的文件目录操作函数:
1.getcwd():获取当前工作目录;
2.is_dir():检查指定的文件是否是目录;
3.opendir():打开目录句柄
——返回值:
成功则返回目录句柄资源。失败则返回 FALSE;
如果路径不是合法目录,或者由于许可限制或文件系统错误导致的目录不能打开,则抛出 E_WARNING 级别的错误;
可以通过在函数名称前添加 '@' 来隐藏 opendir() 的错误输出。
4.readdir():返回目录中下一个文件的文件名
——返回值:
若成功则返回条目名称(文件名),失败则返回 FALSE
5.closedir():关闭目录句柄
主要代码如下:
echo getcwd().'的文件目录树如下,目录用红色显示:<br />'; function fileSys($dir='./'){ //打开目录 if(is_dir($dir)){ $mydir = opendir($dir); echo '<ul>'; while ($filename = readdir($mydir)){ if($filename != '.' && $filename != '..'){ //echo $filename.'<br />'; $newFile = $dir.'/'.$filename;//循环目录下文件不带“/” if (is_dir($newFile)){ echo '<li><font color="red">'.$filename.'</font></li>'; fileSys($newFile); //调用递归遍历下级目录 }else{ echo '<li>'.$filename.'</li>'; } } } echo '</ul>'; //关闭目录 closedir($mydir); }else{ echo '参数不是一个目录<br />' ; } } //调用函数 //echo getcwd().'是一个目录,目录内容如下:<br />'; fileSys();