php DirectoryItertor实现文件遍历




php遍历目录的方式很多,也很简单。 比如面向过程的风格:

  1. is_dir 判断是否是目录文件
  2. opendir 打开目录句柄
  3. readdir 读取目录里的文件

在这里主要介绍下,使用php spl标准库的提供的directoryItertory类来实现目录迭代,其实就是想多多学习下spl库的一些接口和类。SPL标准库为我们提供了很多性能又高,操作方便的类和接口,多多学习,然后运用在实际项目中。

<?php
$directory = "f:/";

// windows文件编码使用的是GB2312编码方式,所以要转换下
$directory = iconv('UTF-8', 'GB2312', $directory);

function itertoryDirectory($directoryPath = 'C:/'){
    static $fileArray = [];
    $itertory = new DirectoryIterator($directoryPath);
    foreach ($itertory as $fileInfo) {
        if ($fileInfo->isDir()) {
            if ($fileInfo->getFilename() === '.' || $fileInfo->getFilename() === '..' || !$fileInfo->isReadable()) {
                continue;
            }
            $pathName = $fileInfo->getPathname();
            itertoryDirectory($pathName);
        }
        if ($fileInfo->isFile()) {
            array_push($fileArray, $fileInfo->getFilename());
        }
    }
    return $fileArray;
}

$array = itertoryDirectory($directory);

var_dump($array);

其实php spl标准库提供了很多好用,性能又好的接口和类的集合。

主要分为这几类:

数据结构

  • 栈 SplStack
  • 队列 SplQueue
  • 定长数组 SplFixedArray (据说和接近C语言的数组,效率很高) 还有很多有用的数据结构,这里就不一一列出来了.传送门

元素遍历

  • SPL规定,所有实现了iterator接口的类,都可以用在while 与 foreach loop中。itertory接口中五个方法必须要实现 1、rewind 2、valid 3、current 4、key 5、next 传送门

提供很多常用的类

  • SplFileinfo 文件处理类
  • ArrayObject 这个类可以将Array转化为object
  • DirectoryItertor 这个类可以用来查看目录下所有的文件

类的自动加载

  • splautoloadregister 自定义类的加载方法

  • StevDott
    9个月前

    Viagra Para Las Mujeres Tadalafil Kaufen <a href=http://gaprap.com>viagra</a> Clarina Z Pack

  • A young Mexican girl carries straw dolls for sale, sharing space with well-dressed men in groups asking if people need medications. <a href="https://viagraoktobuy.com/">order viagra online</a> Incremental promotional costs be decisive in determining what is going time what if a woman takes viagra to help them.

  • Cellar master Jeffrey Chilcott of Marchesi di GrГ©sy conducting a tasting for wine educators from Wasatch Academy of Wine. <a href="https://viagraoktobuy.com/">viagra online</a> Streets of Varanasi and Jaisalmer serve relishing 'bhang lassi' and if you really want to try it, then go at a government approved bhang-shop.

  • LesPymn
    1年前

    How To Order Alli Online In Europe Xenical Direct Alcol Kamagra <a href=http://mpphr.com>dapoxetine pharmacie</a> Allpills Levitra Uk Sales Buying Free Shipping Macrobid Discount Overseas Store El Paso

  • KelLefs
    1年前

    buy accutane online in canada Buy Viagra Online Malaysia <a href=http://bpdrug.com>priligy ficha</a> Viagra Achat 10 Pilule Clomid Et Provames Tamsulosin 0.4mg <a href=http://xzanax.com></a> 1767 Buy Clonidine Overnight


评论表单

Copyright © 2018 睿懿php | 蜀ICP备17011020号-1 | Powered by Aaron