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 相关文章推荐
建立文件交换功能的脚本(二)
Oct 09 PHP
php下使用SMTP发邮件的代码
Jan 10 PHP
PHP 翻页 实例代码
Aug 07 PHP
php中inlcude()性能对比详解
Sep 16 PHP
php生成短网址示例
May 05 PHP
windows7下安装php的php-ssh2扩展教程
Jul 04 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
php 魔术函数使用说明
2010/02/21 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
Python字节单位转换实例
2019/12/05 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
财务分析个人的自荐书范文
2013/11/24 职场文书
法务专员岗位职责
2014/01/02 职场文书
银行员工辞职信范文
2014/01/20 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
手把手教你导入Go语言第三方库
2021/08/04 Golang
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL