Kalaiyarasan
Kalaiyarasan

Reputation: 13454

How to read the files and directories inside the directory

Can any one please let me know how to read the directory and find what are the files and directories inside that directory.

I've tried with checking the directories by using the is_dir() function as follows

$main = "path to the directory";//Directory which is having some files and one directory
readDir($main);

function readDir($main) {
    $dirHandle = opendir($main);
    while ($file = readdir($dirHandle)) {
        if ($file != "." && $file != "..") {
            if (is_dir($file)) {
                 //nothing is coming here
            }
        }
    }
}

But it is not checking the directories.

Thanks

Upvotes: 1

Views: 181

Answers (6)

Nandakumar V
Nandakumar V

Reputation: 4635

Try this
$handle = opendir($directory); //Open the directory
while (false !== ($file = readdir($handle))) {
$filepath = $directory.DS.$file; //Get all files/directories in the directory
}

Upvotes: 0

dan-lee
dan-lee

Reputation: 14502

The most easy way in PHP 5 is with RecursiveDirectoryIterator and RecursiveIteratorIterator:

$dir = '/path/to/dir';
$directoryIterator = new RecursiveDirectoryIterator($dir);

$iterator = new RecursiveIteratorIterator($directoryIterator, RecursiveIteratorIterator::CHILD_FIRST);

foreach ($iterator as $path) {
  if ($path->isDir()) {
     // ...
  }
}

You don't need to recurse by yourself as these fine iterators handle it by themselves.

For more information about these powerful iterators see the linked documentation articles.

Upvotes: 1

user1678541
user1678541

Reputation:

Look at the reference here:

http://php.net/manual/en/function.scandir.php

Upvotes: 0

Kirill Zorin
Kirill Zorin

Reputation: 239

You have to use full path to subdirectory:

if(is_dir($main.'/'.$file)) { ... }

Upvotes: 1

Mathlight
Mathlight

Reputation: 6653

$le_map_to_search = $main;
$data_to_use_maps[] = array();
$data_to_use_maps = read_dir($le_map_to_search, 'dir');
$aantal_mappen = count($data_to_use_maps);
$counter_mappen = 1;
while($counter_mappen < $aantal_mappen){
   echo $data_to_use_maps[$counter_mappen];
   $counter_mappen++;
}

$data_to_use_files[] = array();
$data_to_use_files = read_dir($le_map_to_search, 'files');
$aantal_bestanden = count($data_to_use_files);
$counter_files = 1;
while($counter_files < $aantal_files){
   echo $data_to_use_files [$counter_files ];
   $counter_files ++;
}

Upvotes: 0

alexbusu
alexbusu

Reputation: 761

Use scandir Then parse the result and eliminate '.' and '..' and is_file()

Upvotes: 0

Related Questions