PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结


Posted in PHP onNovember 18, 2014

在进行PHP编程时,需要对服务器某个目录下面的文件进行浏览,通常成为遍历目录。取得一个目录下的文件和子目录,就需要用到opendir()函数、readdir()函数、closedir()函数和rewinddir()函数。

①函数opendir()

函数opendir()用于打开指定目录,接受一个目录的路径及目录名作为参数,函数返回值为可供其他目录函数使用的目录句柄(资源类型)。如果该目录不存在或者没有访问权限,则返回FALSE。

②函数readdir()

函数readdir()用于读取指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数,函数返回当前目录指针位置的一个文件名,并将目录指针向后移动一位。当指针位于目录的结尾时,因为没有文件存在则返回FALSE。

③函数closedir()

函数closedir()关闭指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数。函数无返回值,运行后关闭打开的目录。

④函数rewinddir()

函数reweinddir()倒回目录句柄,接受已经用opendir()函数打开的可操作目录句柄作为参数。将目录指针重置目录到开始处,即倒回目录的开头。

下面用一个实例来说明以上几个函数的使用方法。注意,在使用该例子前请确保同意目录下有phpMyAdmin文件夹。代码如下所示:

<?php

$num = 0; //用来统计子目录和文件的个数

$dirname = 'phpMyAdmin'; //保存当前目录下用来便利的一个目录名

$dir_handle = opendir($dirname); //用opendir打开目录

 

//将遍历的目录和文件名使用表格格式输出

echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">';

echo '<caption><h2>目录'.$dirname.'下面的内容</h2></caption>';

echo '<tr align="left" bgcolor="#cccccc">';

echo '<th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th>';

 

//使用readdir循环读取目录里的内容

while($file = readdir($dir_handle)){

//将将目录下的文件和当前目录连接起来,才能在程序中使用

$dirFile = $dirname."/".$file;

 

$bgcolor = $num+%2==0 ? '#FFFFFF' : '#CCCCCC'; //各行一种颜色

echo '<tr bgcolor='.$bgcolor.'>';

echo '<td>'.filesize($dirFile).'</td>'; //显示文件名

echo '<td>'.filetype($dirFile).'</td>'; //显示文件大小

echo '<td>'.date("Y/n/t",filemtime($dirFile)).'</td>'; //格式化显示文件修改时间

echo '</tr>';

}

 

echo '</table>'; 

closedir($dir_handle); //关闭文件操作句柄

echo '在<b>'.$dirname.'</b>目录下的子目录和文件共有<b>'.$num.'</b>个';

?>

上述程序首先打开一个目录指针,并对其进行遍历。遍历目录时,会包括“.”和“..”两个特殊的目录,如果不需要这俩个目录,可以将其屏蔽。当然显示细节会因为文件夹中内容的不同而有所不同。通过上例可见,在PHP中浏览文件夹中的内容也并不是一件多么复杂的事情。而且PHP还提供了一种面向对象的方式用于目录的遍历,通过使用“dir”类完成。不仅如此,PHP也可以按用户的要求检索目录下指定的内容,提供了glob()函数检索指定的目录。该函数最终返回一个包含检索结果的数组。

PHP 相关文章推荐
PHP include_path设置技巧分享
Jul 03 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
Symfony核心类概述
Mar 17 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
tp5框架使用composer实现日志记录功能示例
Jan 10 PHP
php去除数组中为0的元素的实例分析
Nov 17 PHP
PHP统计目录大小的自定义函数分享
Nov 18 #PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 #PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 #PHP
PHP打开和关闭文件操作函数总结
Nov 18 #PHP
PHP文件读写操作相关函数总结
Nov 18 #PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 #PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 #PHP
You might like
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
php Try Catch异常测试
2009/03/01 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python实现基本进制转换的方法
2015/07/11 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
免税水晶:Duty Free Crystal
2019/05/13 全球购物
股权转让意向书
2014/04/01 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
学生退学证明
2015/06/23 职场文书
学校安全管理制度
2015/08/06 职场文书
六年级情感作文之500字
2019/10/23 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python