最近对操作文件比较感兴趣的说,所以咱们来把文件夹给遍历了,顺便生成个树。

我们要使用的函数有 Scandir,它的作用是列出指定路径中的文件和目录,就像 Dir 一样。

> 与更强力的 Glob() 函数,作用是以数组的形式返回与指定模式相匹配的文件名或目录。

> 友情提醒,千万别像小邪那样在电脑前面呆太长时间,否则就会像小邪一样得见鬼的高血糖。

一. 遍历单层文件夹:

> 在扫描单层文件夹的问题是,两个函数的结果虽有不同,不过表现是相差不大的。

> Scandir 函数会提供额外两行,分别是 “.” 和 “..” ,而 Glob 则是没有的。

function get_dir_scandir(){

$tree = array();

foreach(scandir('./') as $single){

echo $single."
\r\n";

}

}

get_dir_scandir();

function get_dir_glob(){

$tree = array();

foreach(glob('./*') as $single){

echo $single."
\r\n";

}

}

get_dir_glob();

二. 递归遍历文件树:

> 在递归扫描文件夹树的问题上,还是 Glob 函数的表现好一点,很准确的说。

> Scandir 函数会莫名其妙扫描两次 ../ 处的文件,也就是说如果小邪有俩文件。

> ../b.php 和 ../a.php,结果就会在扫描报告上面出现两次,很是奇怪。

//Update at 2010.07.25 - 以下代码作废

$path = '..';

function get_filetree_scandir($path){

$tree = array();

foreach(scandir($path) as $single){

if(is_dir('../'.$single)){

$tree = array_merge($tree,get_filetree($single));

}

else{

$tree[] = '../'.$single;

}

}

return $tree;

}

print_r(get_filetree_scandir($path));

//Update at 2010.07.25 - 以下为新代码

$path = './';

function get_filetree_scandir($path){

$result = array();

$temp = array();

if (!is_dir($path)||!is_readable($path)) return null; //检测目录有效性

$allfiles = scandir($path); //获取目录下所有文件与文件夹

foreach ($allfiles as $filename) { //遍历一遍目录下的文件与文件夹

if (in_array($filename,array('.','..'))) continue; //无视 . 与 ..

$fullname = $path.'/'.$filename; //得到完整文件路径

if (is_dir($fullname)) { //是目录的话继续递归

$result[$filename] = get_filetree_scandir($fullname); //递归开始

}

else {

$temp[] = $filename; //如果是文件,就存入数组

}

}

foreach ($temp as $tmp) { //把临时数组的内容存入保存结果的数组

$result[] = $tmp; //这样可以让文件夹排前面,文件在后面

}

return $result;

}

print_r(get_filetree_scandir($path));

> Glob 函数扫描灰常准确,并且会自动按照字母排好顺序,貌似是最佳方案。

$path = '..';

function get_filetree($path){

$tree = array();

foreach(glob($path.'/*') as $single){

if(is_dir($single)){

$tree = array_merge($tree,get_filetree($single));

}

else{

$tree[] = $single;

}

}

return $tree;

}

print_r(get_filetree($path));

php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码相关推荐

  1. php递归获取文件夹,php递归遍历文件夹

    用递归实现遍历文件夹及其子目录 * ###什么是递归 **递归: 函数不断的调用函数,开辟内存: 是一种典型使用空间换时间的思想(突然间内存被大量占用,效率很高). 当一个函数是为了解决某一个问题的时 ...

  2. linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...

  3. java多线程 文件夹_Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合

    复习IO操作,突然想写一个小工具,统计一下电脑里面的Java代码量还有注释率,最开始随手写了一个递归算法,遍历文件夹,比较简单,而且代码层次清晰,相对易于理解,代码如下:(完整代码贴在最后面,前面是功 ...

  4. python批量删除文件1001python批量删除文件_Python实现递归遍历文件夹并删除文件...

    思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹 ...

  5. python修改文件后缀_python实现遍历文件夹修改文件后缀

    本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下 用法 python Modifer.py ./ -fp java xml # coding:utf-8 ...

  6. linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...

    环境: Ubuntu下采用shell脚本实现 案例简述:文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为 ...

  7. java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  8. php中的递归查找文件夹,PHP递归遍历文件夹

    /* 递归遍历文件夹中所有的文件 */ function get_files($dir) { $files = array(); if(!is_dir($dir)) { return $files; ...

  9. python 文件夹下所有文件_使用Python遍历文件夹下所有文件(包所有含子文件夹)...

    我二话不说先贴为敬 def getFile(path,format): print(path) files = os.listdir(path) # 得到文件夹下的所有文件,包含文件夹名称 FileL ...

最新文章

  1. Java使用Maven加载redis.clients连接Redis
  2. 第2题——DNA片段
  3. proc文件系统探索 之 根目录下的文件[七]
  4. [云炬创业基础笔记]第九章企业的法律形态测试2
  5. arcmap创建空间索引_mysql搜索引擎你会用了么
  6. 《又见一帘幽梦》高清视频
  7. 学习前端开发必读书籍,拥有这几本武功秘籍,让你如有神助
  8. keras笔记(4)-使用Keras训练大规模数据集
  9. Java基本语法格式
  10. 这届年轻人越来越爱养宠物了
  11. 英华特在创业板提交注册:拟募资约5亿元,股权结构较为分散
  12. 别嫌工资少,高薪资的标准你符合几条
  13. 天猫精灵 python_天猫精灵控制ESP8266(Django+micropython)第一节
  14. 铁甲雄心机器人冠军_机器人格斗元老亮相《铁甲雄心》虽败犹荣
  15. css实现简单的头像遮罩效果
  16. 打赏php程序,php全开源视频传输打赏程序源码附带多种支付接口任选选择
  17. 计算机应用基础贴吧,计算机应用基础,有会做的吗?
  18. Bootstrap导航条、分页导航
  19. [python][企业微信]企业微信自动打卡Python脚本,价值一万元的自动打卡脚本
  20. Word里千分号怎么打?

热门文章

  1. 介绍一个好用的静态图片合成为 gif 动画的在线网站
  2. 如何让 Visual Studio Code 里显示 Cypress 的 intelligent code suggestion
  3. SAP Spartacus使用cxComponentWrapper测试MiniCart
  4. Jasmine里的describe,it和expect函数
  5. SAP Spartacus里的converter实例化逻辑
  6. 因为缺少xs-security.json文件导致的部署错误
  7. SAP全球技术研发者大会上海站电子票欣赏
  8. 使用Hybris Commerce User API读取用户信息时,电话字段没有返回
  9. SAP UI5 library-dbg.js - local location
  10. 在nodejs websocket回调函数中没法用this