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


Posted in PHP onJuly 25, 2017

1、前言

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

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

2、相关函数介绍

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

rmdir

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

详情参考: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);//删除空目录 
}

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

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

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

// //关掉资源,删除目录
// 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出错界面
Oct 09 PHP
实现树状结构的两种方法
Oct 09 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
PHP生成随机数的方法总结
Mar 01 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 #PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 #PHP
PHP实现的登录页面信息提示功能示例
Jul 24 #PHP
PHP检查网站是否宕机的方法示例
Jul 24 #PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 #PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 #PHP
php实现和c#一致的DES加密解密实例
Jul 24 #PHP
You might like
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
js Dialog 实践分享
2012/10/22 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
javascript表单验证大全
2015/08/12 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
Python中super的用法实例
2015/05/28 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
python之语音识别speech模块
2020/09/09 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
C#实现启动一个进程
2016/10/01 面试题
优秀护士获奖感言
2014/02/20 职场文书
高中班主任评语大全
2014/04/25 职场文书
竞聘上岗演讲
2014/05/19 职场文书
国企干部对照检查材料
2014/08/22 职场文书
五五普法心得体会
2014/09/04 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python