3

我使用 scandir() 递归搜索文件。但如果文件路径指向文件而不是文件夹,则会出现警告。如何检查路径是否指向文件或文件夹?

enter code here
<?php

$path = "C:\\test_folder\\folder2\\folder4";
$sub_folder = scandir($path);
$num = count($sub_folder);
for ($i = 2; $i < $num; $i++)
{
...//if $sub_folder[$i] is a file but a folder, there will be a warning.
       How can I check $sub_folder[$i] before use it?




}
?>

谢谢!

4

4 回答 4

8

看看 is_dir() 和 is_file()

<?php

$path = "C:\\test_folder\\folder2\\folder4";
$sub_folder = scandir($path);
$num = count($sub_folder);
for ($i = 2; $i < $num; $i++)
{
    if(is_file($path.'\\'.$sub_folder[$i])){
        echo 'Warning';
    }

}
?>
于 2013-09-19T19:54:24.010 回答
4

is_dir()应该告诉您路径是否是目录。

于 2013-09-19T19:53:50.693 回答
2

您可以检查变量是否具有文件扩展名。

这个“if”将只获取文件:

if (pathinfo($file, PATHINFO_EXTENSION))

而这个“if”将只获取目录:

if (!pathinfo($file, PATHINFO_EXTENSION))
于 2017-03-03T02:53:13.787 回答
0

您还可以使用DirectoryIterator ()

$path = 'your path';
$dir = new DirectoryIterator(realpath($path));
foreach ($dir as $fileInfo) {
    if($fileInfo->isFile()) {
        // it's a file
    }
}

此外,您可以检查is_fileis_dir

于 2013-09-19T20:02:18.477 回答