Home > Backend Development > PHP Tutorial > 如何查看目录上的全部文件(包括子目录)?跪求大神帮忙

如何查看目录上的全部文件(包括子目录)?跪求大神帮忙

WBOY
Release: 2016-06-13 11:11:10
Original
928 people have browsed it

怎么查看目录下的全部文件(包括子目录)?跪求大神帮忙。
现有代码如下:

<?php<br />$handle=opendir("./");<br />while(false!==($file=readdir($handle))){<br /> if ($file != "." && $file != ".."){<br />  echo "$file<br>";<br /> }<br />}<br />closedir($handle);<br /> <br />?>
Copy after login


上面代码只能列出本PHP文件所在目录下的文件夹和文件的名字,但不会显示本目录下子文件夹里的文件名。
现在有如下图的目录示意图(随便举个例,不是真的这结构):


如果这个PHP是放在文件夹A里的,请问怎么修改才能显示A目录下的所有文件(包括文件夹B、C、D、E、F、G、H、J、K)?最好分文件夹显示!
对了,最好加个判断,如果这个文件的后缀不是HTML的话,就用红色字体显示。
跪求大神帮忙。在此拜谢!
列出文件名


------解决方案--------------------
我自用的类里面的一个方法,你自己改一下吧
返回数组,二维的
参数说明:
$path 需要系统的绝对路径,结尾不带路径符“\”
$size =True 的时候把文件字节数也获取
$toCsv = 文件名(字符串),在返回数组结果的同时也写入到这个文件,格式为csv格式
** windows系统不能获得路径含有unicode字符的文件名,这不是程序问题,是php的问题
** 不列出空目录,只有文件,你可以参考手册给RecursiveDirectoryIterator加个参数就能得到空目录,但同时注意getsize可能会出错
<br />    public function listDir($path, $size=false, $toCsv=false)<br />    {<br />        if (false !== $toCsv) $newCsv = new SplFileObject($toCsv, 'wb');<br /><br />        $items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));<br />        $arr = array();<br />        while (list($itemName, $item) = each($items))<br />        //foreach($dir as $itemName => $item)<br />        {<br />            $fileInfo = array();<br />            $fileInfo['fullpath'] = (string)$itemName;<br />            if ($size) $fileInfo['size'] = (string)$item->getSize();<br /><br />            if (false !== $toCsv) $newCsv->fputcsv($fileInfo);<br />            $arr[] = $fileInfo;<br />        }<br />        return $arr;<br />    }<br />
Copy after login

我另外有一个可以获取windows unicode文件名的类方法,但相当麻烦,就不贴了
------解决方案--------------------

function show($dir)<br>{     <br>      echo "<b>{$dir}</b><br>";<br>      $dir = realpath($dir) .'/*';<br>      foreach(glob($dir, GLOB_MARK) as $f){<br>            if( substr($f, -5) === '.html' ){<br>                  $f = "<span>{$f}</span>";<br>            }<br>            echo $f ."<br>".PHP_EOL;<br>            if(is_dir($f)){<br>                  show($f);   <div class="clear">
                 
              
              
        
            </div>
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template