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 信息采集程序代码
Mar 17 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP实现链表的定义与反转功能示例
Jun 09 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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PDO实现学生管理系统
2020/03/21 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
J2EE包括哪些技术
2016/11/25 面试题
大学生大二自我鉴定
2013/10/28 职场文书
新闻编辑自荐信
2013/11/03 职场文书
一年级班主任寄语
2014/01/19 职场文书
节能标语大全
2014/06/21 职场文书
冰峪沟导游词
2015/02/09 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
感恩教育观后感
2015/06/17 职场文书
工作报告范文
2019/06/20 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android