Heim > php教程 > php手册 > Hauptteil

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

WBOY
Freigeben: 2016-06-21 08:46:18
Original
1164 Leute haben es durchsucht

 

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

}



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage