首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >is_dir不识别文件夹

is_dir不识别文件夹
EN

Stack Overflow用户
提问于 2010-06-08 22:02:55
回答 8查看 18.2K关注 0票数 4

我正在尝试创建一个函数,该函数扫描文件夹中的子文件夹,然后返回一个包含这些文件夹名称的数字数组。

这是我用来测试的代码。一旦我让它打印出文件夹名称,而不仅仅是“。和"..“现在和上面的文件夹都会很好,我可以完成功能。

代码语言:javascript
运行
复制
<?php
function super_l_getthemes($dir="themes")
{

if ($handle = opendir($dir)) {
    echo "Handle: {$handle}\n";
    echo "Files:\n";


    while (false !== ($file = readdir($handle))) {
       echo "{$file}<br>";
    }

    closedir($handle);
}
?>

上面的代码运行良好,可以打印出文件夹的所有内容:文件、子文件夹和“。和"..“

但如果我换成:

代码语言:javascript
运行
复制
  while (false !== ($file = readdir($handle))) {
       echo "{$file}<br>";
    }

通过以下方式:

代码语言:javascript
运行
复制
while (false !== ($file = readdir($handle))) {
        if(file_exists($file) && is_dir($file)){echo "{$file}";}
    }

该函数仅打印“。和"..“,而不是我想要打印的两个文件夹名称。

任何帮助都是非常感谢的。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-06-08 22:10:34

您必须提供file_exists的绝对路径,否则它将在当前执行路径中查找该路径。

代码语言:javascript
运行
复制
while (false !== ($file = readdir($handle))) {
    $file_path = $dir . DIRECTORY_SEPARATOR . $file;
    if (file_exists($file_path) && is_dir($file_path)) {
        echo "{$file}";
    }
}
票数 6
EN

Stack Overflow用户

发布于 2010-06-08 22:16:07

readdir的问题是它只读取目录中命名条目的字符串。

例如,如果您的文件"foo“在目录"/path/ to /files/”中,当在"/path/to/files/“上使用readdir时,您最终会得到字符串"foo”。

通常情况下,如果它与脚本的当前工作目录在同一目录中,这不是问题,但是,由于您是从任意目录读取的,所以当您尝试检查条目(文件、目录等)时,您将对裸字符串"foo“调用is_dir

我会尝试在您使用readdir提取的名称前面加上文件的路径。

代码语言:javascript
运行
复制
if ($handle = opendir($dir)) {
    echo "Handle: {$handle}\n";
    echo "Files:\n";

    while ($file = readdir($handle)) {
        /*** make $file into an absolute path ***/
        $absolute_path = $dir . '/' . $file;

        /*** NOW try stat'ing it ***/
        if (is_dir($absolute_path)) {
            /* it's a directory; do stuff */
        }
    }

    closedir($handle);
}
票数 3
EN

Stack Overflow用户

发布于 2010-06-08 22:10:44

您需要使用:

代码语言:javascript
运行
复制
while (false !== ($file = readdir($handle))) {
    if(file_exists($dir.'/'.$file) && is_dir($dir.'/'.$file)){echo "{$file}";}
}

请参阅http://php.net/readdir

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2997991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档