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+MySql编写聊天室
Oct 09 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
php getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
深入PHP magic quotes的详解
Jun 17 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
php 广告点击统计代码(php+mysql)
Feb 21 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分页显示制作详细讲解
2008/11/19 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php多进程应用场景实例详解
2019/07/22 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
农历与西历对照
2006/09/06 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
详解JSON Web Token 入门教程
2018/07/30 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
python中将字典转换成其json字符串
2014/07/16 Python
Python实现的一个简单LRU cache
2014/09/26 Python
django框架使用方法详解
2019/07/18 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
python打开文件的方式有哪些
2020/06/29 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
幼儿园大班毕业教师寄语
2014/04/03 职场文书
生日宴会策划方案
2014/06/03 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
无线电知识基础入门篇
2022/02/18 无线电
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL