课程咨询 :025-86971863

南京PHP培训 > 雇主企业 > 企业笔试题 > 目录下读取子文件或子目录
  • 目录下读取子文件或子目录

    发布:南京PHP培训      来源:企业笔试题    

  • <?php

    class RecDir {

    protected $rootPath;

    protected $opDirectory;

    const RECDIR_MIXED = 'mixed';

    const RECDIR_DIR = 'dir';

    const RECDIR_FILE = 'file';

    public $errorMsg = '';

    public $errorNo = 0;

    public function __construct($rootPath) {

    $this->rootPath = $rootPath;

    if (is_dir($this->rootPath)) {

    $this->rootPath = pathinfo($this->rootPath, PATHINFO_DIRNAME) . DIRECTORY_SEPARATOR . pathinfo($this->rootPath, PATHINFO_BASENAME);

    $this->opDirectory = dir($this->rootPath);

    } else {

    $this->errorMsg = '您提供的目录不存在!';

    $this->errorNo = 1001;

    throw new Exception($this->errorMsg, $this->errorNo);

    }

    }

    private function read($directory, $parentPath, $modeInfo = 'mixed', $defaultDir = false, $fullPath = false) {

    $dirInfo = array();

    while (FALSE !== ($childDirOrFileName = $directory->read())) {

    switch ($modeInfo) {

    case self::RECDIR_MIXED:

    if ($defaultDir) {

    $dirInfo[] = $fullPath ? $parentPath . DIRECTORY_SEPARATOR . $childDirOrFileName : $childDirOrFileName;

    } else {

    if ($childDirOrFileName != '.' && $childDirOrFileName != '..') {

    $dirInfo[] = $fullPath ? $parentPath . DIRECTORY_SEPARATOR . $childDirOrFileName : $childDirOrFileName;

    }

    }

    break;

    case self::RECDIR_DIR:

    if (is_dir($parentPath . DIRECTORY_SEPARATOR . $childDirOrFileName)) {

    if ($defaultDir) {

    $dirInfo[] = $fullPath ? $parentPath . DIRECTORY_SEPARATOR . $childDirOrFileName : $childDirOrFileName;

    } else {

    if ($childDirOrFileName != '.' && $childDirOrFileName != '..') {

    $dirInfo[] = $fullPath ? $parentPath . DIRECTORY_SEPARATOR . $childDirOrFileName : $childDirOrFileName;

    }

    }

    }

    break;

    case self::RECDIR_FILE:

    if (is_file($parentPath . DIRECTORY_SEPARATOR . $childDirOrFileName)) {

    $dirInfo[] = $fullPath ? $parentPath . DIRECTORY_SEPARATOR . $childDirOrFileName : $childDirOrFileName;

    }

    break;

    }

    }

    return $dirInfo;

    }

    /**

    * (PHP 5 >= 5.4.0)<br/>

    * 得到目录下的直接子目录或直接子文件信息

    * @param string $modeInfo[可选]<p>

    * 返回目录下信息的模式

    * mixed  返回所有的文件名及目录名

    * dir    返回所有的目录名

    * file   返回所有的文件名

    * </p>

    * @param bool $defaultDir[可选]<p>

    * 是否包括默认的链接目录..和.

    * false  不包括

    * true   包括

    * </p>

    * @param bool $fullPath[可选]<p>

    * 是否返回子文件或目录的路径信息

    * true  是

    * false 否

    * <p>

    * @return array 返回一个数组,记录了该目录下的信息

    */

    public function getPathDirectDirInfo($modeInfo = 'mixed', $defaultDir = false, $fullPath = false) {

    return $this->read($this->opDirectory, $this->rootPath, $modeInfo, $defaultDir, $fullPath);

    }

    }

    //----------------------------test-----------------------------------------

    header("Content-type:text/html; charset=UTF-8");

    try {

    $recDir = new RecDir('./CALLTEMP/');

    $dirs = $recDir->getPathDirectDirInfo('file', true, true);

    var_dump($dirs);

    } catch (Exception $ex) {

    echo '在文件【' . $ex->getFile() . '】中的第' . $ex->getLine() . '行报错:' . $ex->getMessage() . '(' . $ex->getCode() . ')';

    }

    南京php培训:nj.php.tedu.cn

    推荐文章

上一篇:PHP的类与对象

下一篇:php中利用uniqid() 函数生成唯一的id

最新开班日期  |  更多

PHP高级开发工程师就业班

PHP高级开发工程师就业班

开班日期:04-28

PHP高级开发工程师精品班

PHP高级开发工程师精品班

开班日期:04-28

PHP高级开发工程师周末班

PHP高级开发工程师周末班

开班日期:04-28

PHP高级开发工程师定制班

PHP高级开发工程师定制班

开班日期:04-28

  • 地址:南京市秦淮区太平南路333号金陵御景园8楼达内
  • 课程培训电话:025-86971863     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2002-2018 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56