PHP遍历一个文件夹下所有文件和子文件夹的函数

PHP遍历一个文件夹下所有文件和子文件夹的函数

主要运用了递归的思想和scandir()获取子目录函数,其它的不说了,直接上代码。

/**

* 获取目录中所有文件的路径

* @param $dir

* @return array

*/

function my_scandir($dir)

{   

    if(is_dir($dir)){

        $files = array();

        $child_dirs = scandir($dir);

        for($child_dirs as $child_dir){

            //'.'和'..'是Linux系统中的当前目录和上一级目录,必须排除掉,  

            //否则会进入死循环,报segmentation falt 错误

            if($child_dir != '.' && $child_dir != '..'){

                if(is_dir($dir.'/'.$child_dir)){

                    $files[$child_dir] = my_scandir($dir.'/'.$child_dir);

                }else{

                    $files[] = $child_dir;

                }

            }

        }

        return $files;

    }else{

        return $dir;

    }

?>

 

opendir()//打开指定目录,接受一个目录的路径及目录名作为参数,函数返回值为可供其他目录函数使用的目录句柄(资源类型)。如果该目录不存在或者没有访问权限,则返回FALSE。

readdir()//函数readdir()用于读取指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数,函数返回当前目录指针位置的一个文件名,并将目录指针向后移动一位。当指针位于目录的结尾时,因为没有文件存在则返回FALSE。

closedir()//函数closedir()关闭指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数。函数无返回值,运行后关闭打开的目录。

rewinddir()//函数reweinddir()倒回目录句柄,接受已经用opendir()函数打开的可操作目录句柄作为参数。将目录指针重置目录到开始处,即倒回目录的开头。

scandir()//接收目录参数,返回目录下所有的子目录和文件数组
is_dir()//判断输入的参数是否是一个目录

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] ) //创建目录
rmdir()//删除目录,只能删除非空并且有权限的目录

你可能感兴趣的:(PHP遍历一个文件夹下所有文件和子文件夹的函数)