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文件下载类
Dec 06 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
Sep 13 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
php中simplexml_load_string使用实例分享
Feb 13 PHP
PHP5.3安装Zend Guard Loader图文教程
Sep 29 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
Feb 04 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
phpStorm2020 注册码
Sep 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
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
PHP类的封装与继承详解
2015/09/29 PHP
json 定义
2008/06/10 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
学习ExtJS form布局
2009/10/08 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
Delphi CS笔试题
2014/01/04 面试题
学前教育教师求职自荐信
2013/09/22 职场文书
大学生作弊检讨书
2014/09/11 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
2019思想汇报范文
2019/05/21 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP