48、PHP操作目录opendir、readdir、glob

阅读() @2018-10-29 18:16:07

1、glob():显示某个文件夹目录下的所有文件,参数是目录以及需要显示的文件类型,返回值是数组,例如:

//显示a文件夹下的所有php文件
$dir = glob('a\*.php');
echo '<pre>';
print_r($dir);

2、opendir()打开文件、readdir():读取文件、rmdir():删除文件夹目录(只能删除未使用的空目录)、unlink():删除文件。

//打开并读取目录中的内容
$dir = opendir('a');
while($file = readdir($dir)){
	echo $file.'<br/>';	
}

与glob方法类似,只是opendir和readdir只显示文件名称,并不带有上一级路径!

如果要删除某个文件夹下的所有文件,可以使用如下方法:

$dir = opendir('a');
while($file = readdir($dir)){
	unlink('a\\'.$file);
}

但是如果某个文件夹下面还有文件夹,那么就不能直接删除这个文件夹,需要使用递归的方法,代码如下:

function del_dir($dir_name){
	$dir = opendir($dir_name);
	while($file_name = readdir($dir)){
		$file_url = $dir_name.'\\'.$file_name;
		if($file_name!='.'&&$file_name!='..'){
			if(is_dir($file_url)){
				del_dir($file_url);
			}else if (is_file($file_url)) {
				@unlink($file_url);
			}
		}
	}
	closedir($dir);//关闭刚才打开的文件夹
	rmdir($dir_name);//经过以上处理,确认此文件夹中确实没有文件了,只剩下空的文件夹,现在就可以进行执行删除,否则会报错!
}
del_dir('a');

以上方法的执行过程是:打开并读取文件夹a里边的内容,利用while循环判断这个文件是不是【.】或【..】,如果是的话,就不执行下面的代码,如果不是的话,再次判断读取到的文件是文件夹还是普通的文件,如果是普通的文件,就直接删除,如果是文件夹,就执行递归,再次循环读取。

某个文件夹下有n个空文件夹,也不能直接删除这个文件夹,因为程序不知道这个文件夹里边的文件夹里是否还有内容,所以可以执行del_dir方法,判定文件夹里边确实没有内容了,就可以删除!

微信二维码
锐壳主机