PHP: Calculate the Size, Number of Files & Folders of a Directory
Posted on September 24, 2008, Filled under PHP,
Bookmark it
Thanks for visiting our website! We regularly publish posts like this one. If you are interested in receiving the latest updates as soon as they are posted, please consider subscribing to the RSS feed or to our e-mail newsletter.
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
Sponsors
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