Размер папки

  • Автор темы Автор темы serzh
  • Дата начала Дата начала

serzh

Guest
Размер папки

Всё, что мне нужно узнать, так это какой функцией, можно определить размер папки с файлами?:rolleyes:
 
самописной. Суммировать размер входящих файлов. Рекурсивно.
 
ну что вы тут все, enjoy, да enjoy. Наверное если спрашиваю, то незнаю как сам сделать. Не могли бы вы функцию написать, плз.
 
нет, не могли бы.
функция ведь тебе нужна, а не нам.
а тебе, с помощью примеров по ссылкам - раз плюнуть.
и бесплатное - заметь - обучение.
 
Примеры, есть но чё то не в тему. Эх, ладно, жадюги вы, а я думал это форум в котором всегда решат твою проблему. Буду сам думать. Но могли бы вы тогда подсказать саму суть? На словах, что из чего вычитать, а то на ум ничего абсолютно не приходит.
 
Алгоритм.
0. Читаешь файл из папки.
0.5 Если это - . или .. , то continue
1. Если это файл, то прибавляешь его размер к общей сумме
2. Если папка - вызываешь эту же функцию определения размера
3. Читаешь очередной файл.
4. Если файлы закончились - return размер.

С рекурсией знаком?
 
спасибо. Но дело в том, что там может быть одна папка в одной, та в другой и тд. Как быть в этом случаи?

-~{}~ 10.06.04 21:19:

С рекурсией знаком?
сказать честно - нет.
 
Да я сделал это. Вот смотрите.
PHP:
<?// Функция
function dir_size($dir) {
$totalsize=0;
if ($dirstream = @opendir($dir)) {
while (false !== ($filename = readdir($dirstream))) {
if ($filename!="." && $filename!="..")
{
if (is_file($dir."/".$filename))
$totalsize+=filesize($dir."/".$filename);

if (is_dir($dir."/".$filename))
$totalsize+=dir_size($dir."/".$filename);
}
}
}
closedir($dirstream);
return $totalsize;

}

// Вывод в мегах (идёт не округление, а просто обрезание после точки - intval)
$dir_size_all = dir_size("C:/Video");
$dir_size_cut = $dir_size_all / 1024000;
echo intval($dir_size_cut);?>
 
а нельзя было просто df -s ? Выполнить как консольную команду.
Чё то до меня сразу не дошло...
 
совершенно верно.
но ценность этого решения понимаешь тоьлко сделав скриптом.
 
если спрашиваю, то незнаю как сам сделать
Да я сделал это. Вот смотрите.
вообще, о наличии таких чуваков я как-то не задумывался до сих пор.
свято верил в честную людскую тупость...
а тут вона, как...
 
предложение для ф-ии dir_size:
$dir_size_cut = $dir_size_all / 1024000;
заменить на:
$dir_size_cut = $dir_size_all / 1048576;
 
Сверху