今天就跟大家聊聊有关使用php怎么删除指定的文件夹,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强> 1,前言强>
目标:php删除一个指定目录
所使用的的php函数:is_dir, opendir, readdir, scandir,删除目录,closedir,等等(注:其他文件操作函数也可以完成,这里只列举了本次使用的函数)
<强> 2,相关函数介绍强>
php文件操作的方法大致相同,已经在上一篇介绍过了,这里就不在重复介绍,这里就介绍一个新函数
<强>删除文件夹强>
* * ,* [delAllFile 描述],删除指定目录 ,* @param [型],dirName 美元;[描述],目录 ,* @param [型],file 美元;[描述],记录的过程文件 ,* @param integer  type 美元;[描述],第一次默认打开新文件,第二次调用不打开 (类型),* @return ,,,(描述) ,*/public function  delAllFile(文件目录名美元,,,,type 美元;=,1),{ 美元,美元re =,这→checkDir($目录名); ,//默认第一次打开文件 ,如果美元(类型){ ,file 美元;=,fopen(文件,美元,& # 39;w # 39;);//打开日志文件 ,} ,如果(re) { ,$ this→delFile(目录名美元,,文件); ,其他}{ 美元,写入文件(文件,“{$目录名}清理完成\ r \ n"); ,} }
/* * ,* [checkDir 描述),检测文件夹是否为空,为空直接删除 ,* @param [型],dirName 美元;[描述],文件夹名 (类型),* @return ,,,(描述) ,*/private function  checkDir(目录名),{ ,a 美元;=,scandir(目录名)美元;//列出,images 目录中的文件和目录: ,//只包含。和. .目录的文件夹为空文件夹 ,如果(sizeof(美元),==,2){ ,删除目录(目录名); ,return 假; ,} ,return 真实; }/* * ,* [delFile 描述),上传文件的方法 ,* @param [型],dirName 美元;[描述],目录 ,* @param [型],file 美元;[描述],记录的文件 (类型),* @return ,,,(描述) ,*/private function  delFile(目录名美元,,文件),{ ,dh 美元;=,openDir($目录名); ,而(handle 美元;=,readdir (dh)美元){ ,如果(handle 美元==,& # 39;强生# 39;,| |,handle 美元;==,& # 39;. . & # 39;),{ ,继续; ,} 美元,美元resource =,目录名# 39;公司/& # 39;美元处理; ,//判断是否是文件夹 ,如果(is_dir(资源)美元),{ ,//判断文件夹是否为空 美元,美元re =,这→checkDir($目录名); ,如果(re) { 美元,美元这→delAllFile(资源,,文件,美元,0); ,其他}{ 美元,写入文件(文件,“{$资源}清理完成\ r \ n"); ,继续; ,} ,其他}{ 美元,拆开(资源); ,} ,} , ,//关掉资源,删除目录 美元,closedir (dh);//关闭目录资源, 美元,写入文件(文件,“{$目录名}清理完成\ r \ n"); ,删除目录(目录名);//删除空目录, }
然而,上面的代码遇到子目录层级高的时候,就容易出现一个警告,导致目录无法删除
//,//关掉资源,删除目录//,closedir (dh);//关闭目录资源,//,写入文件(文件“{$目录名}清理完成\ r \ n");//删除文件夹(目录名);//删除空目录, ,//每次目录层级高了就报错,故加个循环处理 小姐:美元=,1; (我){ 美元,美元re =,这→checkDir($目录名); dirName 美元,echo “小姐:次& lt; br/祝辞& lt;人力资源/在“; 美元,我+ +; ,如果(! $ re) { 小姐:美元才能=,0; ,,closedir (dh);//关闭目录资源, 写入文件才能($文件“{$目录名}清理完成\ r \ n");,, ,} }
加上这层可以避免无法删除的情况(有时候删不掉是权限的问题)
<强> 4,结语强>
删除一个目录相对比较简单,基本步骤为:
1,判断是否是目录,是目录则递归调用自己,否则直接删除文件;