当前位置: 首页 > 知识库问答 >
问题:

is_dir和is_file不使用来自根目录的路径

杜楚
2023-03-14

我使用scandir()来检查一个目录文件,它可以正确地使用来自root的路径,比如/dir 1/dir 2/......(dir 1不在我的. php文件后面,它是root中的一个文件夹)

但是当在相同的路径上使用is_dir和is_file时,它会输出错误的结果

我怎样才能解决这个问题?

共有2个答案

颛孙国源
2023-03-14

请试试这个

function getDirContents($dir) {
    $handle = opendir($dir);
    if (!$handle) return array();
    $contents = array();
    while $entry = readdir($handle)) {
        if ($entry=='.' || $entry=='..') continue;

        $entry = $dir.DIRECTORY_SEPARATOR.$entry;
        if (is_file($entry)) {
            $contents[] = $entry;
        } else if (is_dir($entry)) {  
            $contents = array_merge($contents, getDirContents($entry));
        }
    }
    closedir($handle);
    return $contents;
}

$directoryPath = 'Path to folder';
$getDirContents = getDirContents($directoryPath);
echo "<pre>";
print_r(getDirContents );
echo "</pre>";
栾越
2023-03-14

只需看看PHP自己的DirectoryIterator对象,它比单个函数更快、更详细。

$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        var_dump($fileinfo->getFilename());
    }
}

这段代码直接从留档中取出。它获取当前执行文件的当前目录并遍历它。只要当前的$fileinfo不是一个点,它就会转储该目录中文件和子目录的文件名。

 类似资料:
  • 我有一个名为myPro s的库,看起来像这样 我有一个。外部调用的proto文件称为示例。应该导入hello的proto。协议 所以文件的顶部看起来像这样: 现在,当我编译示例时。proto在示例中出现导入错误。pb。go因为它有导入行import“path/to/myProtos/proto/hello.pb.go” 我尝试添加两个导入路径,但出现“导入但未使用”错误。我还尝试进行相对导入,并将

  • 此方法用于确定文件是否确实是文件。 此方法是filelib库的一部分。 语法 (Syntax) is_file(filename) 参数 (Parameters) filename - 如果文件名是文件,则需要确定该文件名。 返回值 (Return Value) 是的,如果文件存在且确实是文件。 例如 (For example) -module(helloworld). -export([st

  • 问题内容: 我正在编写一个PHP脚本,该脚本将一系列生成的文件(使用)下载到一个目录中,然后使用该命令将其压缩。 下载可以完美运行,并且大多数情况下都可以压缩。我运行命令: 它会生成一个包含所有下载文件的zip文件,但是在到达目录之前它包含完整目录。 我可能只是从zip命令中丢失了一个标志或一些小标志,但是如何将其用作根目录? 问题答案: 我不认为zip可以这样做。我认为唯一的方法是: (反斜杠只

  • 问题内容: 仅选择目录,如何使用JFileChooser获取目录的绝对路径? 问题答案: 用: 和…一起: 然后调用返回的对象。

  • 此方法用于确定目录是否确实是目录。 此方法是filelib库的一部分。 语法 (Syntax) is_dir(directoryname) 参数 (Parameters) directoryname - 这是目录名称,如果它是目录,则需要确定该目录名称。 返回值 (Return Value) 是的,如果目录存在且确实是目录。 例如 (For example) -module(helloworld

  • 我有一个简单的骆驼路线,从Kafka的主题消费。做一些处理并写回另一个Kafka主题。 我怀疑Kafka可能是一个请求-应答交换,响应被反馈给源endpoint。因此尝试向Seda添加“waitfortasktoComplete=Never”。但没有成功。 任何帮助都将不胜感激。