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
PHP 变量的定义方法
Jan 26 PHP
PHP版网站缓存加快打开速度的方法分享
Jun 03 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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中Collection 类的设计
2013/06/21 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
python实现对一个完整url进行分割的方法
2015/04/29 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
python 回溯法模板详解
2020/02/26 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
介绍一下Ruby的特点
2013/01/20 面试题
平面设计师的工作职责
2013/11/21 职场文书
医院办公室主任职责
2013/12/29 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
雷锋的故事观后感
2015/06/10 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL