How to get file name, file size and sub directory from given directory

How to get file name, file size and sub directory from given directory

In this PHP tutorial, I will tell you how to read files and sub-directory from given directory with example.

Get file path and size

In this example, I have a folder/directory "demo" within C:\xampp\htdocs directory.

Now using below code, You can easily get all files and their size using PHP function.

  1. <?php
  2. function getDirContents($dir, &$results = array()){
  3. $files = scandir($dir);
  4. foreach($files as $key => $value){
  5. $path = realpath($dir.DIRECTORY_SEPARATOR.$value);
  6. if(!is_dir($path)) {
  7. $results[] = ['path'=>$path,'size'=>filesize($path)];
  8. } else if($value != "." && $value != "..") {
  9. getDirContents($path, $results);
  10. $results[] = ['path'=>$path,'size'=>filesize($path)];
  11. }
  12. }
  13. return $results;
  14. }
  15. $fileslist = getDirContents('C:\xampp\htdocs\demo');
  16. echo "<pre>";
  17. print_r($fileslist);

Output :

Array
(
    [0] => Array
        (
            [path] => C:\xampp\htdocs\demo\file1.jpg
            [size] => 23708
        )

    [1] => Array
        (
            [path] => C:\xampp\htdocs\demo\file2.jpg
            [size] => 410510
        )
)

filesize function returns the size in bytes of specified file.

Return all sub directory without files

In this example, I will use PHP glob() method that returns an array of filenames or directories.

This is smarter way to find all files having specified pattern :

  1. <?php
  2. print_r(glob("*.jpg"));
  3. ?>

This will return all files having ".jpg" extension.

Array
(
	[0] => file1.jpg
	[1] => file2.jpg
)

Using glob method you can get all the directories and files.

$dirs = array_filter(glob('*'), 'is_dir');
print_r( $dirs);

This will return the directories without files.

$fileDir = array_filter(glob('*'));
print_r($fileDir);

This will return the directories with files.

Scan directory and files inside the specified path
$files=scandir('C:\xampp\htdocs\demo');
print_r($files);

This will return the array of files and directory from given path.

Phone: (+91) 8800417876
Noida, 201301