<?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 返回一個數(shù)組,記錄了該目錄下的信息 */ 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小代碼----目錄下讀取子文件或子目錄
當前鏈接:http://www.yijiale78.com/article16/jododg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、網(wǎng)站改版、小程序開發(fā)、網(wǎng)站排名、標簽優(yōu)化、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)