当前位置: 首页 > news >正文

遍历 目录的几种有效办法

这一两个月来到新公司 刚好赶上项目进度,加班有点多,忘了记录点什么。。刚刚商品上传扫描 这块用上了之前研究的 目录相关技巧的 知识,很开心;当然下一期的 迭代器的讲解更有意思 ^-^;

 

传统扫描目录(我基本弃用了):

/**********************
一个简单的目录递归函数
第一种实现办法:用dir返回对象
 ***********************/
function tree($directory)
{
    $mydir = dir($directory);
    echo "<ul>\n";
    while($file = $mydir->read())
    {
        if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!=".."))
        {
            echo "<li><font color=\"#ff00cc\"><b>$file</b></font></li>\n";
            tree("$directory/$file");
        }
        else
            echo "<li>$file</li>\n";
    }
    echo "</ul>\n";
    $mydir->close();
}

  

第二种:php5.4 更新的,比较好用,遍历目录

/**
 * @desc 使用扫描目录函数来遍历
 * @Author  FredGui
 * @param string $path
 */
function dirList($path = '/var/www/html/guimm/test'){
    foreach(scandir($path) as $i => $mod)
    {
        if(is_dir('/var/www/html/guimm/test/'.$mod) && !in_array($mod,['.','..']))
        {
            test1('/var/www/html/guimm/test/'.$mod);
            echo '目录是:'. $mod . "<br/>";
        }else{
            $files[$i] = $mod;
            echo '文件:'. $mod . "<br/>";
        }
    }
}

最后一种 我现在 用的,迭代器,他的好处就不多说了,下一期博客 会讲解相关的迭代器原理

/**
 * @desc 遍历目录,用文件系统迭代器
 * @Author  FredGui
 * @param string $path
 */
function fileList( $path = '/var/www/html/guimm/test'){

    $file = new FilesystemIterator($path);
    foreach ($file as $fileinfo) {
        /** @var $fileinfo SplFileInfo */
       if($fileinfo->isFile()){
           echo $fileinfo -> getFilename() . "<br/>";
       }elseif($fileinfo->isDir()){
           echo $fileinfo->getPathname() . "<br/>";
           fileList($fileinfo->getPathname());
       }
    }
}

  

 

转载于:https://www.cnblogs.com/guixiaoming/p/6923028.html

相关文章:

  • Nginx Http框架的理解
  • Device eth0 does not seem to be present,delaying initialization
  • Bzoj4488 [Jsoi2015]最大公约数
  • 开源 java CMS - FreeCMS2.6 会员管理
  • C#下RSA算法的实现(适用于支付宝和易宝支付)
  • 监控与管理dubbo服务
  • OC中的@的作用研究
  • Haskell:什么时候该注释,什么时候不该注释
  • DeepMind 开源 Sonnet:在 TensorFlow 中快速构建神经网络
  • 【转载】使用缓存的9大误区(下)
  • 工作脚本处理文本
  • mysql5.6之 传输表空间迁移表或恢复误删除的表
  • MySQL 创建数据库及数据表
  • ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )
  • 中国技术力量:ChinaTech Day 亮相 QCon 旧金山
  • [译]CSS 居中(Center)方法大合集
  • 【React系列】如何构建React应用程序
  • 【翻译】babel对TC39装饰器草案的实现
  • ➹使用webpack配置多页面应用(MPA)
  • CentOS 7 防火墙操作
  • Java|序列化异常StreamCorruptedException的解决方法
  • Javascript弹出层-初探
  • JavaScript中的对象个人分享
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Redis 懒删除(lazy free)简史
  • Sequelize 中文文档 v4 - Getting started - 入门
  • spring boot下thymeleaf全局静态变量配置
  • Spring框架之我见(三)——IOC、AOP
  • 大快搜索数据爬虫技术实例安装教学篇
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 那些被忽略的 JavaScript 数组方法细节
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端临床手札——文件上传
  • 深度学习入门:10门免费线上课程推荐
  • 实现简单的正则表达式引擎
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 思考 CSS 架构
  • 用简单代码看卷积组块发展
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • mysql面试题分组并合并列
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​Python 3 新特性:类型注解
  • ​Spring Boot 分片上传文件
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (12)Hive调优——count distinct去重优化
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (阿里云万网)-域名注册购买实名流程
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (四)JPA - JQPL 实现增删改查
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始