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 相关文章推荐
在PWS上安装PHP4.0正式版
Oct 09 PHP
PHP 变量类型的强制转换
Oct 23 PHP
PHP 面向对象详解
Sep 13 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
php png失真的原因及解决办法
Nov 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
详解PHP数组赋值方法
2015/11/07 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
node中socket.io的事件使用详解
2014/12/15 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
在Python中处理XML的教程
2015/04/29 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
给水工程专业毕业生自荐信
2014/01/28 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书