php获取指定目录下的所有文件列表

在我们实际的开发需求中,经常用到操作文件,今天就讲一下关于获取指定目录下的所有文件的几种常用方法:

 

1、scandir()函数

scandir() 函数返回指定目录中的文件和目录的数组。

scandir(directory,sorting_order,context); 
参数描述
directory必需。规定要扫描的目录。
sorting_order

可选。规定排列顺序。默认是 0,表示按字母升序排列。

如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列。

如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果。

context可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。

若成功则返回文件和目录的数组。失败则返回 FALSE。

如果 directory 不是目录,则抛出 E_WARNING 级别的错误。

假如有如下目录结构:

在sf.php写入代码如下:

<?php  
//获取当前文件所在的绝对目录
$dir =  dirname(__FILE__);
//扫描文件夹
$file = scandir($dir);
//显示
echo " <pre>";
print_r($file);
?>

显示如下图所示:

2、使用opendir、readdir、closedir

opendir() 函数打开一个目录句柄,若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。

readdir() 函数返回由 opendir() 打开的目录句柄中的条目。若成功,则该函数返回一个文件名,否则返回 false。

closedir — 关闭目录句柄。

代码如下:

<?php  
//取得当前文件所在目录
$dir  =  dirname(__FILE__);
 //判断目标目录是否是文件夹
        $file_arr = array();
        if(is_dir($dir)){
            //打开
            if($dh = @opendir($dir)){
                //读取
              
                while(($file = readdir($dh)) !== false){
                    if($file != '.' && $file != '..'){
  
                        $file_arr[] = $file;
                    }
                }
                //关闭
                closedir($dh);
            }
}
?>
echo "<pre>";
print_r($file);

结果如图:

DEMO下载地址:https://dwz.cn/fgXtRtnu

原文地址:https://www.cnblogs.com/xproer/p/10790098.html