全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php 删除指定文件夹的实例讲解

1、前言

目标:php删除一个指定目录

所使用的的php函数:is_dir,opendir,readdir,scandir,rmdir,closedir,等等(注:其他文件操作函数也可以完成,这里只列举了本次使用的函数)

2、相关函数介绍

php文件操作的方法大致相同,已经在上一篇介绍过了,这里就不在重复介绍,这里就介绍一个新函数

rmdir

详情参考:http://www.w3school.com.cn/php/func_filesystem_rmdir.asp

3、代码构成

**
 * [delAllFile description] 删除指定目录
 * @param [type] $dirName [description] 目录
 * @param [type] $file [description] 记录的过程文件
 * @param integer $type [description] 第一次默认打开新文件,第二次调用不打开
 * @return [type]   [description]
 */
public function delAllFile($dirName, $file, $type = 1) {
 $re = $this->checkDir($dirName);
 //默认第一次打开文件
 if($type){
 $file = fopen($file, 'w');//打开日志文件
 }
 if($re){
 $this->delFile($dirName, $file);
 }else{
 fwrite($file,"{$dirName}清理完成\r\n");
 }
}

/**
 * [checkDir description] 检测文件夹是否为空,为空直接删除
 * @param [type] $dirName [description] 文件夹名
 * @return [type]   [description]
 */
private function checkDir($dirName) {
 $a = scandir($dirName);//列出 images 目录中的文件和目录:
 //只包含.和..目录的文件夹为空文件夹
 if(sizeof($a) == 2){
 rmdir($dirName);
 return false;
 }
 return true;
}
/**
 * [delFile description] 上传文件的方法
 * @param [type] $dirName [description] 目录
 * @param [type] $file [description] 记录的文件
 * @return [type]   [description]
 */
private function delFile($dirName, $file) {
 $dh = openDir($dirName);
 while($handle = readdir($dh)){
 if($handle == '.' || $handle == '..') {
 continue;
 }
 $resource = $dirName.'/'.$handle;
 //判断是否是文件夹
 if(is_dir($resource)) {
 //判断文件夹是否为空
 $re = $this->checkDir($dirName);
 if($re){
 $this->delAllFile($resource, $file, 0);
 }else{
 fwrite($file,"{$resource}清理完成\r\n");
 continue;
 }
 }else{
 unlink($resource);
 }
 }
 
 //关掉资源,删除目录
 closedir($dh);//关闭目录资源 
 fwrite($file,"{$dirName}清理完成\r\n");
 rmdir($dirName);//删除空目录 
}

然而,上面的代码遇到子目录层级高的时候,就容易出现一个警告,导致目录无法删除

故对于层级高的子集,需要在最后加上一个循环判断,来判断是否可以删除,来避免这个错误

// //关掉资源,删除目录
// closedir($dh);//关闭目录资源 
// fwrite($file,"{$dirName}清理完成\r\n");
//rmdir($dirName);//删除空目录 
 
//每次目录层级高了就报错,故加个循环处理
$i = 1;
while($i){
 $re = $this->checkDir($dirName);
 echo "$dirName $i 次<br/><hr/>";
 $i++;
 if(!$re){
  $i = 0;
  closedir($dh);//关闭目录资源 
  fwrite($file,"{$dirName}清理完成\r\n");  
 }
}

加上这层可以避免无法删除的情况(有时候删不掉是权限的问题)

4、结语

删除一个目录相对比较简单,基本步骤为:

1、判断是否是目录,是目录则递归调用自己,否则直接删除文件;

2、判断目录是否为空,不为空 rmdir会抛出错误;

3、文件权限的问题(window,这个不是什么问题)

以上这篇php 删除指定文件夹的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# php  # 删除文件夹  # PHP实现批量清空删除指定文件夹所有内容的方法  # php递归删除指定文件夹的方法小结  # php清空(删除)指定目录下的文件  # 不删除目录文件夹的实现代码  # PHP删除指定目录中的所有目录及文件的方法  # 为空  # 判断是否  # 给大家  # 递归  # 过了  # 希望能  # 这篇  # 报错  # 在上  # 高了  # 什么问题  # 抛出  # 小编  # 大家多多  # 举了  # 这层  # 上传文件  # 新文件  # 删不掉  # 目录中 


相关文章: 微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何快速搭建二级域名独立网站?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何在Tomcat中配置并部署网站项目?  上海网站制作开发公司,上海买房比较好的网站有哪些?  定制建站流程步骤详解:一站式方案设计与开发指南  如何制作算命网站,怎么注册算命网站?  如何快速使用云服务器搭建个人网站?  PHP 500报错的快速解决方法  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  香港服务器网站卡顿?如何解决网络延迟与负载问题?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  如何快速搭建高效WAP手机网站吸引移动用户?  网站制作话术技巧,网站推广做的好怎么话术?  如何在阿里云部署织梦网站?  教程网站设计制作软件,怎么创建自己的一个网站?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何快速生成高效建站系统源代码?  活动邀请函制作网站有哪些,活动邀请函文案?  如何在云主机上快速搭建网站?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  微信推文制作网站有哪些,怎么做微信推文,急?  郑州企业网站制作公司,郑州招聘网站有哪些?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  临沂网站制作企业,临沂第三中学官方网站?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  ,怎么用自己头像做动态表情包?  建站之星如何助力网站排名飙升?揭秘高效技巧  实例解析angularjs的filter过滤器  如何通过可视化优化提升建站效果?  如何解决VPS建站LNMP环境配置常见问题?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  IOS倒计时设置UIButton标题title的抖动问题  建站主机核心功能解析:服务器选择与网站搭建流程指南  网站图片在线制作软件,怎么在图片上做链接?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  如何在Ubuntu系统下快速搭建WordPress个人网站?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  建站主机选虚拟主机还是云服务器更好?  开源网站制作软件,开源网站什么意思?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何设置并定期更换建站之星安全管理员密码?  如何通过多用户协作模板快速搭建高效企业网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何登录建站主机?访问步骤全解析  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  详解jQuery中基本的动画方法  动图在线制作网站有哪些,滑动动图图集怎么做?  高端企业智能建站程序:SEO优化与响应式模板定制开发 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。