区分PHP中的文件和目录

时间:2011-10-19 08:43:38

标签: php file directory

我的问题是一个提取目录内容的php页面 正如您在下面的代码段中看到的那样,路径是通过GET传递的 我第一次调用页面时会正确读取所有内容,但如果您只是读取包含子目录的文件夹,则会将其识别为文件。
你有什么建议或解决方案吗?
感谢

 <?php
     $path = $_GET['dir'];
     function createDir($path) {
         if ($handle = opendir($path)) {
             echo "<ul>";
             while (false !== ($file = readdir($handle))) {
                 if (is_dir($path . $file) && $file != '.' && $file != '..')
                     printSubDir($file, $path, $queue);
                 else if ($file != '.' && $file != '..')
                     $queue[] = $file;
             }

             printQueue($queue, $path);
             echo "</ul>";
         }
     }

     function printQueue($queue, $path) {
         foreach ($queue as $file) {
             printFile($file, $path);
         }
     }

     function printFile($file, $path) {
         echo "<li>";
            // print a file
         echo "</li>";
     }

     function printSubDir($dir, $path) {
         echo "<li>";
            // print a directory
         echo "</li>";
     }

     createDir($path);
 ?>

2 个答案:

答案 0 :(得分:3)

您可以使用DirectoryIterator轻松实现此目标:

$oIterator = new DirectoryIterator(dirname(__FILE__));
foreach ($oIterator as $oFileInfo) {

    // Either . or ..
    if ($oFileinfo->isDot()) {

    }

    // A directory
    if ($oFileInfo->isDir()) {

    }
}

答案 1 :(得分:1)

您可以使用is_dir()is_file()来检查这一点,而不是使用递归函数来读取它们。如果只是标记为目录,您可以使用支票。

http://php.net/manual/en/function.is-dir.php