PHP: Calculate the Size, Number of Files & Folders of a Directory
Posted on September 24, 2008, under PHP,
Bookmark it
Hello coders,
This is a PHP Class that calculates the size, number of files & folders of a specific directory.
calculate.directory.class.php
<?php
/*
Credits: BitRepository.com
URL: http://www.bitrepository.com/web-programming/php/calculate-the-size-number-of-files-folders-of-a-directory.html
*/
class Directory_Calculator {
var $size_in;
var $decimals;
function calculate_whole_directory($directory)
{
if ($handle = opendir($directory))
{
$size = 0;
$folders = 0;
$files = 0;
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if(is_dir($directory.$file))
{
$array = $this->calculate_whole_directory($directory.$file.'/');
$size += $array['size'];
$files += $array['files'];
$folders += $array['folders'];
}
else
{
$size += filesize($directory.$file);
$files++;
}
}
}
closedir($handle);
}
$folders++;
return array('size' => $size, 'files' => $files, 'folders' => $folders);
}
function size_calculator($size_in_bytes)
{
if($this->size_in == 'B')
{
$size = $size_in_bytes;
}
elseif($this->size_in == 'KB')
{
$size = (($size_in_bytes / 1024));
}
elseif($this->size_in == 'MB')
{
$size = (($size_in_bytes / 1024) / 1024);
}
elseif($this->size_in == 'GB')
{
$size = (($size_in_bytes / 1024) / 1024) / 1024;
}
$size = round($size, $this->decimals);
return $size;
}
function size($directory)
{
$array = $this->calculate_whole_directory($directory);
$bytes = $array['size'];
$size = $this->size_calculator($bytes);
$files = $array['files'];
$folders = $array['folders'] - 1; // exclude the main folder
return array('size' => $size,
'files' => $files,
'folders' => $folders);
}
}
?>
Here’s an usage example of this class:
example.php
<?php set_time_limit(10000); include 'calculate.directory.class.php'; /* Path to Directory - IMPORTANT: with '/' at the end */ $directory = '/home/mywebsite.com/public_html/'; /* Calculate size in: B (Bytes), KB (Kilobytes), MB (Megabytes), GB (Gigabytes) */ $size_in = 'MB'; /* Number of decimals to show */ $decimals = 2; $directory_size = new Directory_Calculator; /* Initialize Class */ $directory_size->size_in = $size_in; $directory_size->decimals = $decimals; $array = $directory_size->size($directory); // return an array with: size, total files & folders echo "The directory <em>".$directory."</em> has a size of ".$array['size']." ".$size_in.", ".$array['files']." files & ".$array['folders']." folders."; ?>

Do you wish to receive the latest updates as soon as they are posted? Get our RSS Feed or Subscribe to the Newsletter!
- September 24, 2008
- article by Gabriel C.
- 3 comments
Related Posts
-
PHP: How to calculate the size of a fileat September 11, 2008 with 2 comments
-
How to recursively read a directory with all its contentat September 4, 2008
-
How to Remove a (non-empty) Directory using PHPat September 28, 2008 with 1 comment
-
PHP: Sort Files from Directory & Order them by Filemtime()at October 5, 2008 with 5 comments
-
PHP: Some Ways to Scan a Directoryat December 12, 2008 with 4 comments

3 Replies to "PHP: Calculate the Size, Number of Files & Folders of a Directory"
March 10, 2009 at 12:39 PM
thank you very much :)
May 8, 2009 at 9:00 PM
I would like that u give me easy way that i get number of folders and number of files just from any one website.
Thnaks
October 1, 2009 at 11:47 AM