在我们实际的开发需求中,经常用到操作文件,今天就讲一下关于获取指定目录下的所有文件的几种常用方法:
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);
结果如图: