
PHP script to list files in a given directory
The below given script goes through a given directory and list the name of the files in the order as it is stored in the file system.
The first script uses a directory handler to operate on a given directory. It opens the handler, reads file entries one by one by looping through the directory (during this step you can process the file ) and finally close the handler
// Source folder - Folder from where you want to list records
$path = "YourFolder/";
//Create and Open directory handle
if ($handle = opendir($path)) {
//Read entry from directory handle
while (false !== ($file = readdir($handle))) {
// do something with the file
if ('.' === $file)
continue;
elseif ('..' === $file)
continue;
else
echo("<a href='".$path.$file."'>".$file."</a> Last updated on: ".date("M d Y h:i A", filectime($path.$file))."<br/>");
}
//Close directory handle
closedir($handle);
}
$path = "YourFolder/";
//Create and Open directory handle
if ($handle = opendir($path)) {
//Read entry from directory handle
while (false !== ($file = readdir($handle))) {
// do something with the file
if ('.' === $file)
continue;
elseif ('..' === $file)
continue;
else
echo("<a href='".$path.$file."'>".$file."</a> Last updated on: ".date("M d Y h:i A", filectime($path.$file))."<br/>");
}
//Close directory handle
closedir($handle);
}
opendir($path) : opendir() Opens a directory handler. This handler is used by directory specific functions like readdir(), closedir() etc.
readdir($handle) : readdir() reads each entry in the folder using the directory handle opened by opendir(). using a while loop we can iterate the directory and list the files
closedir($handle): closedir() closes the directory handle opened by opendir()
Directory looping using GLOB function
The above given function is rewritten by using glob function:
// Source folder - Folder from where you want to list records
$path = "YourFolder/";
$files = glob( $path."*.*" ); // to avoid hidden files by using a pattern match
// display the file names if there are any contents in the folder
if(count($files)){
for( $i=0 ; $i < count($files) ; $i++ ){
echo("<a href='".$file[$i]."'>".str_replace($path,"",$files[$i])."</a> Last updated on: ".date("M d Y h:i A", filectime($files[$i]))."<br/>");
}
}
$path = "YourFolder/";
$files = glob( $path."*.*" ); // to avoid hidden files by using a pattern match
// display the file names if there are any contents in the folder
if(count($files)){
for( $i=0 ; $i < count($files) ; $i++ ){
echo("<a href='".$file[$i]."'>".str_replace($path,"",$files[$i])."</a> Last updated on: ".date("M d Y h:i A", filectime($files[$i]))."<br/>");
}
}
How glob() can replace opendir() ?
glob() returns an array of file names which matches the given the string pattern. Loop through the file array to list the records.
Display Files in a directory based on last modified date
If you want to sort and list the filenames based on the last updated date add a small statement to the above mentioned code:
// Source folder - Folder from where you want to list records
$path = "YourFolder/";
$files = glob( $path."*.*" ); // to avoid hidden files by using a pattern match
// Sort files by modified time, latest to oldest
array_multisort(array_map( 'filemtime', $files ),SORT_NUMERIC,SORT_DESC,$files);
// display the file names if there are any contents in the folder
if(count($files)){
for( $i=0 ; $i < count($files) ; $i++ ){
echo("<a href='".$file[$i]."'>".str_replace($path,"",$files[$i])."</a> Last updated on: ".date("M d Y h:i A", filectime($files[$i]))."<br/>");
}
}
$path = "YourFolder/";
$files = glob( $path."*.*" ); // to avoid hidden files by using a pattern match
// Sort files by modified time, latest to oldest
array_multisort(array_map( 'filemtime', $files ),SORT_NUMERIC,SORT_DESC,$files);
// display the file names if there are any contents in the folder
if(count($files)){
for( $i=0 ; $i < count($files) ; $i++ ){
echo("<a href='".$file[$i]."'>".str_replace($path,"",$files[$i])."</a> Last updated on: ".date("M d Y h:i A", filectime($files[$i]))."<br/>");
}
}
array_map() — Applies the callback to the elements of the given arrays. This function returns an array containing all the elements of array1 after applying the callback function to each one.
array_multisort — Sort multiple or multi-dimensional arrays. It can be used to sort several arrays at once, or a multi-dimensional array by one or more dimensions.