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也可以?成Shell Script
Oct 09 PHP
类的另类用法--数据的封装
Oct 09 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
php使用GeoIP库实例
Jun 27 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 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实现加减法验证码代码
2014/02/14 PHP
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
Sample script that deletes a SQL Server database
2007/06/16 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
js分页代码分享
2014/04/28 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
Python中的包和模块实例
2014/11/22 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
如何唤起类中的一个方法
2013/11/29 面试题
护士专业推荐信
2013/11/02 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
二年级学生评语大全
2014/04/23 职场文书
优质服务活动实施方案
2014/05/02 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
教师自荐信范文
2015/03/06 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
放假通知范文
2015/04/14 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
走进科学观后感
2015/06/18 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书