> 백엔드 개발 > PHP 튜토리얼 > php小代码----目录下读取子文件或子目录_PHP教程

php小代码----目录下读取子文件或子目录_PHP教程

WBOY
풀어 주다: 2016-07-13 16:53:55
원래의
915명이 탐색했습니다.

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)
      * 得到目录下的直接子目录或直接子文件信息
      * @param string $modeInfo[可选]

      * 返回目录下信息的模式
      * mixed  返回所有的文件名及目录名
      * dir    返回所有的目录名
      * file   返回所有的文件名
      *
      * @param bool $defaultDir[可选]

      * 是否包括默认的链接目录..和.
      * false  不包括
      * true   包括
      *
      * @param bool $fullPath[可选]

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

      * @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() . ')';
}

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1053347.htmlTechArticlephp小代码----目录下读取子文件或子目录 ?php class RecDir { protected $rootPath; protected $opDirectory; const RECDIR_MIXED = mixed; const RECDIR_DIR = dir; const RECD...
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿