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;
	}
}

###下面总结一下常用的php 文件和目录操作函数:
目录操作函数:

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()//删除目录,只能删除非空并且有权限的目录

文件操作函数参考
http://www.jb51.net/article/57720.htm

利用递归删除目录及文件的例子

/**
 * 删除目录及目录下所有文件或删除指定文件
 * @param str $path   待删除目录路径
 * @param int $delDir 是否删除目录,1或true删除目录,0或false则只删除文件保留目录(包含子目录)
 * @return bool 返回删除状态
 */
function delDirAndFile($path, $delDir = FALSE) {
    $handle = opendir($path);
    if ($handle) {
        while (false !== ( $item = readdir($handle) )) {
            if ($item != "." && $item != ".."){
                is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
            }
        }
        closedir($handle);
        if ($delDir){
        	return rmdir($path);
        }
    }else {
        if (file_exists($path)) {
            return unlink($path);
        } else {
            return FALSE;
        }
    }
}

电子书籍视频资源下载:关注微信公众号 【超级学仔】
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值