3

考虑这两个文件夹结构:

Foo/
    Folder1/
        File1.txt
    Folder2/
    Folder3/
    File2.txt

Bar/
    Folder1/
        Folder2/
    Folder3/
    Folder4/

我想知道 PHP 中最有效的方法来告诉我“Foo”文件夹中有两个文件,而“Bar”文件夹中有零个文件。注意它是递归的。即使“File1.txt”文件不在 Foo”文件夹内,我仍然希望它计数。另外,我不在乎文件的名称是什么。我只想要文件总数。

任何帮助,将不胜感激。谢谢!

4

2 回答 2

7

使用RecursiveDirectoryIterator. 这是文档

$rdi = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/home/thrustmaster/Temp', FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::LEAVES_ONLY);

foreach ($rdi as $file)
    echo "$file\n";
print iterator_count($rdi);
于 2012-06-30T06:14:00.687 回答
2

您需要一个递归函数来循环遍历目录结构。这就是在不使用面向对象的解决方案的情况下计算文件数量的所有方法。

此函数将递归计算目录及其子目录中的文件数。

function countDir($dir, $i = 0) {
    if ($handle = opendir($dir.'/')) {
        while (false !== ($file = readdir($handle))) {

            // Check for hidden files the array[0] on a 
            // string returns the first character
            if ($file[0] != '.') {
                if (is_dir($dir.'/'.$file)) {
                    $i += countDir($dir.$file, $i);
                } else {
                    $i++;
                }
            }
        }
    }

    return $i;
}
于 2012-06-30T06:23:01.607 回答