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 相关文章推荐
example1.php
Oct 09 PHP
把PHP安装为Apache DSO
Oct 09 PHP
PHP设计聊天室步步通
Oct 09 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
PHP实现的XML操作类【XML Library】
Dec 29 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
Laravel框架路由管理简单示例
May 07 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 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实现网站插件机制的方法
2009/11/10 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
javascript 数组的方法集合
2008/06/05 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
Javascript调用C#代码
2011/01/17 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
videocapture库制作python视频高速传输程序
2013/12/23 Python
Python探索之修改Python搜索路径
2017/10/25 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
np.dot()函数的用法详解
2020/01/17 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
教你怎样写好自我评价
2013/10/05 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
保险公司开门红口号
2014/06/21 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
正规欠条模板
2015/07/03 职场文书
校园安全主题班会
2015/08/12 职场文书