目次
php SPL DirectoryIterator 获取网站目录列表的方法
您可能感兴趣的文章
ホームページ php教程 php手册 php SPL DirectoryIterator 获取网站目录列表的方法

php SPL DirectoryIterator 获取网站目录列表的方法

Jun 13, 2016 am 09:05 AM
php spl 目次

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内存消耗量以实现程序的性能优化
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles