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 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
PHP 遍历XP文件夹下所有文件
Nov 27 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
PHP获取文件相对路径的方法
Feb 26 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
Apr 09 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
IE下js调试工具Companion.JS
2010/10/15 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
JavaScript中的细节分析
2012/06/30 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
Python脚本实现集群检测和管理功能
2015/03/06 Python
python使用多线程不断刷新网页的方法
2015/03/31 Python
Python简单实现enum功能的方法
2016/04/25 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
python实现决策树分类(2)
2018/08/30 Python
详解Python的循环结构知识点
2019/05/20 Python
python groupby 函数 as_index详解
2019/12/16 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
学生党员思想汇报
2013/12/28 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
教师节倡议书2015
2015/04/27 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书