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 获取本机外网/公网IP的代码
May 09 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
php include和require的区别深入解析
Jun 17 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
php面象对象数据库操作类实例
Dec 02 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
Mar 22 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
PHP使用Redis长连接的方法详解
Feb 12 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
js自带函数备忘 数组
2006/12/29 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
node实现基于token的身份验证
2018/04/09 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
SVG实现时钟效果
2018/07/17 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
ptyhon实现sitemap生成示例
2014/03/30 Python
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
pyqt5自定义信号实例解析
2018/01/31 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
python与mysql数据库交互的实现
2020/01/06 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
物业前台接待岗位职责
2015/04/03 职场文书
教师培训学习心得体会
2016/01/21 职场文书