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記憶體消耗量以實現程式的效能最佳化
http://www.bkjia.com/PHPjc/992744.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/992744.htmlTechArticlephp SPL DirectoryIterator 擷取網站目錄列表的方法 自 PHP 5.0 起php便增加了一些內建的組件和介面,比如SPL(標準php庫,全稱:Standard PHP Library)...