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小时内与您取得联系。