|
|
|
| Ответ 004 на задачу N 8.
С условиями задачи можно ознакомится по ссылке.
<?
// Функция определения размера заданной директории
function GetSizeDir($dirname)
{
$size = 0;
// открываем и читаем файлы из директории
$dir = opendir($dirname);
while($file = readdir($dir))
{
if($file == "." || $file == "..")
continue;
// если считанный файл - папка, рекусривно определяем размер этой папки
if(filetype("$dirname/$file") == "dir")
$size += GetSizeDir("$dirname/$file");
// иначе прибавляем к общему размеру размер файла
else
$size += filesize("$dirname/$file");
}
return $size;
}
function GetShortSize($size)
{
// Массив величин
$metr[0] = "Bytes";
$metr[1] = "Kb";
$metr[2] = "Mb";
$metr[3] = "Gb";
$metr[4] = "Tb";
$i = 0;
$newsize = $size;
// пока значение в одной из величин (Байты, Килобайты,
// Мегабайты, Гигабайты, Террабайты) не станет меньшим единицы ...
while(($newsize / 1024) > 1)
{
// делим разер на 2^10
$newsize /= 1024;
// меняем индекс величины
$i++;
}
// формируем строку
return sprintf("%5.2f $metr[$i] ($size bytes)",$newsize);
}
// читаем текущий каталог
$dir = opendir("./");
echo "<pre><table border>\n"
."<tr><td><b>Dir</b></td><td><b>Size</b></td></tr>\n";
while($file = readdir($dir))
{
if($file == "." || $file == "..")
continue;
// если прочитана папка, определяем и выводим её размер
if(filetype($file) == "dir")
echo "<tr><td>$file</td><td>".GetShortSize(GetSizeDir($file))."</td></tr>\n";
}
echo "</table></pre>\n";
?>
|
http://www.softtime.ru/info/task.php?id_article=78 | |
|
|
|
|
|
|
|
для: SoftTime
(20.02.2006 в 22:45)
| | Прекрасно структурированный код, отсутствует зависимость от функций и особенностей PHP 5, т.е. он вполне применим на практике. Отсуствуют глобальные переменные, так как возвращая результат через функцию вполне можно обойтись без них. | |
|
|
|