程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php SPL DirectoryIterator 獲取網站目錄列表的方法

php SPL DirectoryIterator 獲取網站目錄列表的方法

編輯:關於PHP編程

php SPL DirectoryIterator 獲取網站目錄列表的方法


自 PHP 5.0 起php便增加了一些內置的組件和接口,比如SPL(標准php庫,全稱:Standard PHP Library),該庫定義的一些類和接口極大的方便了php開發人員輕松快速的開發實際項目。本篇文章將簡單記錄一下SPL庫中的一個關於文件夾(目錄)處理的類,DirectoryIterator。

關於處理文件夾(目錄),首先看一下傳統的處理辦法,可參看本站文章:

php讀取目錄並列表顯示目錄中的文件的函數

下面用 DirectoryIterator 類實現如上連接文章中的辦法:

function listDir($dir){
	if(!file_exists($dir)||!is_dir($dir)) return '';
	$dir=new DirectoryIterator($dir);
	$dirList=array('dirNum'=>0,'fileNum'=>0,'lists'=>'');
	while($dir->valid()){
		if($dir->getFilename()!=='.'&&$dir->getFilename()!=='..'){
			$dirList['lists'][$dir->key()]['name']=$dir->getFilename();
			if($dir->isDir()){//判斷是否是目錄
				$dirList['dirNum']++;
				$dirList['lists'][$dir->key()]['isDir']=1;
			}else{
				$dirList['fileNum']++;
				$dirList['lists'][$dir->key()]['isDir']='';
			}
		}
	    $dir->next();
    }
    return $dirList;
}

下面是關於 DirectoryIterator 類中比較常見的一些方法及說明:

方    法

描    述

DirectoryIterator::__construct

由路徑構建一個新的目錄迭代器

DirectoryIterator::current

返回當前對象(Iterator接口所要求的方法)

DirectoryIterator::getATime

得到文件的最後訪問時間

DirectoryIterator::getCTime

得到文件的inode修改時間

DirectoryIterator::getChildren

如果這是一個目錄,為當前項返回一個迭代器

DirectoryIterator::getFilename

返回當前目錄項的文件名

DirectoryIterator::getGroup

得到文件組

DirectoryIterator::getInode

得到文件inode

DirectoryIterator::getMTime

得到文件的最後修改時間

DirectoryIterator::getOwner

得到文件所有者

DirectoryIterator::getPath

返回目錄路徑

DirectoryIterator::getPathname

返回當前目錄項的路徑和文件名

DirectoryIterator::getPerms

得到文件權限

DirectoryIterator::getSize

得到文件大小

DirectoryIterator::getType

得到文件類型

DirectoryIterator::isDir

如果當前項是一個目錄,返回true

DirectoryIterator::isDot

如果當前項是.或..,返回true

DirectoryIterator::isExecutable

如果文件可執行,返回true

DirectoryIterator::isFile

如果文件是一個常規文件,返回true

DirectoryIterator::isLink

如果文件是一個符號鏈接,返回true

DirectoryIterator::isReadable

如果文件可讀,返回true

DirectoryIterator::isWritable

如果文件可寫,返回true

DirectoryIterator::key

返回當前目錄項

DirectoryIterator::next

移動到下一項

DirectoryIterator::rewind

將目錄指針返回到開始位置

DirectoryIterator::valid

檢查目錄中是否包含更多項

另外 SPL 類庫中處理目錄的方法還有 RecursiveDirectoryIterator 方法,這個方法與 DirectoryIterator 方法的區別就是可以獲取包括子目錄在內的所有文件。

關於 RecursiveDirectoryIterator 的方法有:

方    法

描    述

RecursiveDirectoryIterator::getChildren

如果這是一個目錄,為當前項返回一個迭代器

RecursiveDirectoryIterator::hasChildren

返回當前項是否是一個目錄而不是.或..

RecursiveDirectoryIterator::key

返回當前目錄項的路徑和文件名

RecursiveDirectoryIterator::next

移動到下一項

RecursiveDirectoryIterator::rewind

將目錄指針返回到開始位置

RecursiveIteratorIterator::current

訪問當前元素值

RecursiveIteratorIterator::getDepth

得到遞歸迭代的當前深度

RecursiveIteratorIterator::getSubIterator

得到當前活動子迭代器

RecursiveIteratorIterator::key

訪問當前鍵

RecursiveIteratorIterator::next

前移到下一個元素

RecursiveIteratorIterator::rewind

將迭代器返回到頂級內層迭代器的第一個元素

RecursiveIteratorIterator::valid

檢查當前位置是否合法

可以看到,SPL可以很快、很高效地處理你可能遇到的有關目錄的所有問題。

另外關於 php DirectoryIterator 類的靠譜解釋可參看php類庫的標准文檔:

http://php.net/manual/en/class.directoryiterator.php

您可能感興趣的文章

  • PHP中跳出多重循環使用break,continue,goto,return,exit的用法和區別
  • php中echo,print,print_r,var_export,var_dump 的用法與區別
  • dedeCMS(織夢)網站服務器目錄安全設置經驗分享
  • 如何去除codeIgniter開發的網站url裡面的index.php字符串
  • PHP中file_get_contents於curl性能效率比較
  • PHP壓縮html網頁代碼(清除空格,換行符,制表符,注釋標記)
  • php讀取目錄並列表顯示目錄中的文件的函數
  • 用PHP函數memory_get_usage獲取當前PHP內存消耗量以實現程序的性能優化

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved