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内存消耗量以实现程序的性能优化

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。
