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入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
PHP删除非空目录的函数代码小结
Feb 28 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
实例讲解php实现多线程
Jan 27 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 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 什么是PEAR?(第三篇)
2009/03/19 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python中的模块和包概念介绍
2015/04/13 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
小学岗位竞聘方案
2014/01/22 职场文书
军训自我鉴定200字
2014/02/13 职场文书
教职工代表大会主持词
2014/04/01 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
大专生求职信
2014/06/29 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
公证委托书标准格式
2014/09/11 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
MySQL 数据表操作
2022/05/04 MySQL