- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章php递归创建和删除文件夹的代码小结由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
第一种方法: 。
复制代码代码如下
<?php /** * 目录生成类 :UtilsMakeDir * @author yepeng * @since 2010.3.18 */ class UtilsMakeDir{ //基目录 建立目录时不会对这个目录进行建立。这应该是个已经存在的目录 private static $makeBasePath = 'video'; private static $delBasePath = 'video'; /** * 递归建立目录, * 建立成功返回这个全路径, * 建立失败返回false * @param String $pathString 路径字符串如'2/3/4/5' * @return false or string public static function makeDir($pathString){ $pathArray = explode('/',$pathString); if(empty($pathArray[0])){ return false; } $path = array_shift($pathArray); self::$basePath = self::$basePath.'/'.$path; if(is_dir(self::$basePath)){ $path = implode('/',$pathArray); self::makeDir($path); } else{ @mkdir(self::$basePath,0777); $path = implode('/',$pathArray); self::makeDir($path); } if(is_dir(self::$basePath)){ return self::$basePath; } else{ return false; } } */ /** * 建立目录,包括基目录,比如图片要放在video(video为存在的目录)下面,你传入的参数应该是video/2/3/4 * 建立成功返回这个全路径, * 建立失败返回false * @param String $pathString 路径字符串如'video/2/3/4/5' * @return false or string **/ public static function makeDir($pathString){ $pathArray = explode('/',$pathString); $tmpPath = array_shift($pathArray); foreach ($pathArray as $val){ $tmpPath .= "/".$val; if(is_dir($tmpPath)){ continue; } else { @mkdir($tmpPath,0777); } } if(is_dir($tmpPath)){ return $tmpPath; } else{ return false; } } /** * 递归删除 * 删除目录及文件 * 如果传一个‘video/2/3/4'这样的路径将删除4下的所有目录和文件 * @param string $stringPath */ public static function delDir($stringPath){ if(!$handle = @opendir($stringPath)){ return false; } while (false !==($file = readdir($handle))){ if($file !='.' && $file != '..'){ $tmpdir = $stringPath."/".$file; if(is_dir($tmpdir)){ self::delDir($tmpdir); rmdir($tmpdir); } if(is_file($tmpdir)){ unlink($tmpdir); } } } closedir($handle); }} ?> 。
循环+递归,在winxp下测试成功,只要php文件编码为gb2312,文件名随意,应该把文件名改为编码为gb2312,就行 。
复制代码代码如下
<?php deltree('./复件 复件 复件 复件 复件 复件 复件 复件 aaa'); function deltree($pathdir) { //echo $pathdir.'<br/>';//我调试时用的 if(is_empty_dir($pathdir))//如果是空的 { rmdir($pathdir);//直接删除 } else {//否则读这个目录,除了.和..外 $d=dir($pathdir); while($a=$d->read()) //下只删除$pathdir下 { if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) { unlink($pathdir.'/'.$a); //如果是文件就直接删除 }elseif(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) //如果是目录 { if(!is_empty_dir($pathdir.'/'.$a))//是否为空 { deltree($pathdir.'/'.$a); //如果不是,调用自身 }else { rmdir($pathdir.'/'.$a); //如果是空就直接删除 } } } $d->close(); //echo "必须先删除目录下的所有文件";//我调试时用的 rmdir($pathdir); } } function is_empty_dir($pathdir) { //判断目录是否为空,我的方法不是很好吧?除了.和..之外有其他东西不是为空 $d=opendir($pathdir); $i=0; while($a=readdir($d)) { $i++; } closedir($d); if($i>2){return false;} else return true; } ?> 。
第二种递归法 在winxp下测试成功,只要php文件编码为gb2312,文件名随意,应该把文件名改为编码为gb2312,就行,没测 。
复制代码代码如下
<?php header("Content-Type:text/html; charset=gb2312"); if(deleteDir('./复件 复件 复件 复件 复件 复件 复件 复件 复件 复件 复件 aaa')) echo "删除成功"; function deleteDir($dir) { if (@rmdir($dir)==false && is_dir($dir)) //删除不了,进入删除所有文件 { if ($dp = opendir($dir)) { while (($file=readdir($dp)) != false) { if($file!='.' && $file!='..') { //echo $file=$dir.'/'.$file;echo '<br/>'; $file=$dir.'/'.$file; if (is_dir($file)) //是真实目录 { deleteDir($file); }else { unlink($file); } } } closedir($dp); }else { return false; } } if (is_dir($dir) && @rmdir($dir)==false) //是目录删除不了 return false; return true; } ?> 。
第三种递归法 在winxp下测试成功,是列出目录文件 很好用 。
复制代码代码如下
<?php function listDir($dir) { static $break=0; if($break++==100) exit;//控制深入层数 static $i=-0; if(is_dir($dir))//目录 { if ($dh = opendir($dir))//打开 { while (($file = readdir($dh)) !== false) { if((is_dir($dir."/".$file)) && $file!="." && $file!="..")//目录 { $j=$i;while($j--) echo "-------"; echo "<b><font color='red'>目录名:</font></b>".$dir."/".$file."<br><hr>"; $i++; listDir($dir."/".$file); $i--; } else { if($file!="." && $file!="..") { $j=$i;while($j--) echo "-------"; $ext=trim(extend($file)); //if($ext=='jpg') echo $dir.'/'.$file."<br>"; } } } closedir($dh); } } } function extend($file_name) { $retval=""; $pt=strrpos($file_name, "."); if ($pt) $retval=substr($file_name, $pt+1, strlen($file_name) - $pt); return ($retval); } //开始运行 listDir("."); ?> 。
最后此篇关于php递归创建和删除文件夹的代码小结的文章就讲到这里了,如果你想了解更多关于php递归创建和删除文件夹的代码小结的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
目录 前言 style-loader css-loader sass-loader postcss-loader babel-l
目录 1、简单动态字符串(SDS) 2、链表 3、字典 哈希表 哈希表节点 字典 4、跳跃表
JS运行三部曲 js运行代码共分三步 语法分析 预编译 解释执行 JavaScript代码在运行时,首先会进行语法分析,通篇检查代码是否存在低级错误,然后进行预编译,整理内
目录 +拼接方式 sprintf函数 Join函数 buffer.Builderbuffer.WriteString函数 buffer.B
下面整理下python有哪些方式可以读取数据文件。 1. python内置方法(read、readline、readlines) read() : 一次性读取整个文件内容。推荐使用re
背景 项目中的流程监控,有几种节点,需要监控每一个节点是否超时。按传统的做法,肯定是通过定时任务,去扫描然后判断,但是定时任务有缺点:1,数据量大会慢;2,时间不好控制,太短,怕一
目录 1. 提炼函数 2. 合并重复的条件片段 3. 把条件分支语句提炼成函数 4. 合理使用循环 5. 提前让函数退出代替嵌套条件分支
开始之前,pandas中dataframe删除对象可能存在几种情况 1、删除具体列 2、删除具体行 3、删除包含某些数值的行或者列 4、删除包含某些字符、文字的行或者列 本文就针对这四种情况探讨
setData setData 是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。在介绍常见的错误用法前,先简单介绍一下 setData 背后的工作原理。 工作原理 小程序的视图层
下面是五种实现斐波那契数列的方法 循环 ? 1
一,分析代码运行时间 第1式,测算代码运行时间 平凡方法 快捷方法(jupyter环境) 第2式,测算代码多次运行平均时间 平凡方法 快捷方法(jupyter环境) 第
python之成为图像处理任务的最佳选择,是因为这一科学编程语言日益普及,并且其自身免费提供许多最先进的图像处理工具。本文主要介绍了一些简单易懂最常用的python图像处理库。 当今世界充满了各种
流式布局 采用流式布局会将元素按从左到右的顺序排列,如果一个元素在一行中放不下,那这个元素会另起一行依然按照从左到右的顺序排列 示例: 代码 public class Tes
@PropertySource 作用是:对自定义的properties文件加载 使用:@PropertySource(value={"classpath:people.properti
实现消息队列的两种方式 apache activemq官方实例发送消息 直接在apache官网http://activemq.apache.org/download-archives.html下
常用配置 以下配置能使用File -> New Projects Settings -> Settings for New Projects进行配置的尽量用这个配置,因为这个配置是作用
摘要: 开发者开发部署web应用时通常使用tomcat服务器,很多初学者只懂得在开发工具上配置,但离开了开发工具,自己手动配置部署,并让一个项目跑起来,你会了吗。小编也遇到过这样的困扰。网上查找的
1. 字符串的翻转 利用切片 ? 1
cookie和session在java web开发中扮演了十分重要的作用,本篇文章对其中的重要知识点做一些探究和总结。 1.cookie存在于浏览器 随意打开一个网址,用火狐的调试工具,随意选取
1、使用内置的tomcat,通过java -jar的方式启动 比如:java -jar bms.jar 但是这种启动方式 一旦关闭控制台 或者crtl+c 退出 此时应用就关闭了
我是一名优秀的程序员,十分优秀!