最近要做一个清空缓存的功能,就琢磨了下
写了一个简单的删除文件夹的方法,由于并没有太多对文件的操作,也就没封装成类,有需要的可以拿去,或者完善下,代码如下:
/**
* @param $dir string 文件夹名称
* @param bool $status bool 是否删除文件夹
*/
function delDirFile($dir,$status=false)
{
$handle = opendir($dir);
while($file = readdir($handle))
{
if($file != '.' && $file != ".."){
$subdirectory = $dir.'/'.$file;
if(is_dir($subdirectory)) {
$this->delDirFile($subdirectory,true);
} else {
unlink($subdirectory);
}
}
}
closedir($handle);
if($status){
rmdir($dir);
}
}
其实原理也很简单的,就是,打开文件句柄(opendir()),然后得到目录中下一个文件的名称(readdir()),判断是否是文件夹(is_dir()),如果是就递归,不是就代表是文件,是文件就删除,关闭文件句柄,由于php中删除文件夹(rmdir()),要求该文件夹必须是空的,而且还要有相应的权限,所以要把删除文件夹操作放到最后,判断$status,然后执行。