Как узнать количество файлов в директории?

NiC

Буратино был тупой
Как узнать количество файлов в директории?

Субж, собсна.
Если я пропустил это в мане - прошу ткнуть носом.
 

AnToXa

prodigy-одаренный ребенок
что-то вроде такого `ls -la | wc -l`
ну и потом отнять 2, которые приходятся на . и ..
 

freenet

Guest
$fd = opendir ("директори");
unset ($files);
if ($fd)
{
while ($file = readdir ($fd))
{
if (($file !=".") && ($file !="..") && ($file !=""))
{
$files[] = $file;
}
}
closedir ($fd);
$i = count ($files);

может можно проше.....
 

freenet

Guest
да кстате число файлов будет ровно $i-1......
 

AnToXa

prodigy-одаренный ребенок
2NiC: нууу.... так красиво не получится :))
предлагаю так (чуть измененный способ от freenet)

PHP:
$d = dir("путь");
$nEntries = 0;
  while (false !== ($entry = $d->read())) {
     $nEntries++;
   }
$d->close();
число файлов будет $nEntries - 2
 

NiC

Буратино был тупой
2 AnToXa: Гы, чуток ты меня опередил.
Я вот что родил -
<?
chdir("path/to/dir");
$dir = dir(".");
$dir -> rewind();
while ($file=$dir -> read()) {
$i++;
echo("$file<br>");
}
echo $i;
?>
 

AnToXa

prodigy-одаренный ребенок
тебе надо обязательно обнулять $i перед циклом!
кстати, я пример из мана почти полностью выкрал :)
 

Mammoth

Guest
Автор оригинала: AnToXa
что-то вроде такого `ls -la | wc -l`
ну и потом отнять 2, которые приходятся на . и ..
Точно не помню (а мана под рукой нет), но по моему вот такая команда позволяет получить готовый результат, без дополнительных вычислений:

`ls -lA | wc -l`
 

AnToXa

prodigy-одаренный ребенок
Mammoth: см. выше. уже было и было отклонено :)
 

AnToXa

prodigy-одаренный ребенок
Mammoth: да, совершенно верно - такой параметр. жаль, что это не подходит.
 

Mammoth

Guest
Я не насчет данного конкретного случая, когда "сервер на окнах"...

Просто решил добавить для линуксодов: `ls -la | wc -l` - это не то же самое, что `ls -lA | wc -l`. Т.е. не требуется дополнительно отнимать 2 для получения кол-ва файлов...
 
Сверху