php - 计数目录中的文件,但不包括子目录

标签 php directory

我找到了一篇旧帖子,其中包含几乎完美的代码来解决我的问题:计算目录中的(许多)文件。它不包括 . en .. 条目,但不是其他目录。 我通过添加评论添加了一个问题,但没有得到回复。 (太旧的帖子,我想) ( Count how many files in directory php )

$fi = new FilesystemIterator(images, FilesystemIterator::SKIP_DOTS);
printf("There were %d Files", iterator_count($fi));

在 php.net 上搜索过,但是很多这个主题都没有记录。我确实找到了 SKIP_DOTS 事实,但没有找到关于如何排除目录的一封信。

现在我的代码生成:There were 76849 Files 但这也包括子目录。

如何更改此代码,以便排除我的子目录?

由于一些答案而更新

/**
PHP version problem, need update first

$files = new FilesystemIterator('images');
$filter= new CallbackFilterIterator($files, function($cur, $key, $iter) {
return $cur->isFile();
});
printf('There were %d Files', iterator_count($filter));
*/


$time0 = time();

$fi = new FilesystemIterator(images, FilesystemIterator::SKIP_DOTS);

$fileCount = 0;
foreach ($fi as $f) {
    if ($f->isFile()) {
        $fileCount++;
    }
}
printf("xThere were %d Files", $fileCount);

$time1 = time();
echo'<br />tijd 1 = '.($time1 - $time0); // outcome 5

echo'<hr />'; 


$fi = new FilesystemIterator(images, FilesystemIterator::SKIP_DOTS);
printf("yThere were %d Files", iterator_count($fi));
$time2 = time();
echo'<br />tijd 2 = '.($time2 - $time1); // outcome: 0

我现在不能使用第一个答案,因为我必须更新我的 PHP 版本。 在测量时间时,第二个答案需要更多的时间来处理。

我还注意到,由于第二个答案,我自己的代码不计算子目录中的文件,它只计算子目录的数量,在我的例子中只有 4 个。 所以为了速度,我将使用我自己的代码和它的 sbstract 4。 下周我会尝试更新我的 php 版本,然后再试一次。

感谢大家的贡献!!!

最佳答案

使用 CallbackFilterIterators(自 5.4 起可用)很容易:

$files = new FilesystemIterator('images');
$filter= new CallbackFilterIterator($files, function($cur, $key, $iter) {
    return $cur->isFile();
});

printf('There were %d Files', iterator_count($filter));

关于php - 计数目录中的文件,但不包括子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20444069/

相关文章:

r - 在R中将文件夹从一个目录复制到另一个目录

php - 根据另一个表的 2 个条件计算 mysql 表行

php - 有什么办法可以从服务器恢复已删除的 .env laravel 文件

php - 如何使用 codeigniter 3 调用 hooks 文件夹中的库?

PHP:使用相对图像路径从指定目录中提取所有图像

ios - 如何从 iOS 应用程序沙箱中删除目录

javascript - 使用 Javascript 在选择框更改时显示 MySQL 列数据

php - 查询两个表,选择两个字段匹配的数据

python - 使用 python 在 ubuntu 上附加目录

ruby - --css-dir 是否总是相对于项目目录?