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 相关文章推荐
ajax 的post方法实例(带循环)
Jul 04 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
php输入流php://input使用示例(php发送图片流到服务器)
Dec 25 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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&amp;mysql(六)
2006/10/09 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
tab栏切换原理
2017/03/22 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
详解vue中axios的封装
2018/07/18 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
办公室主任岗位职责
2013/11/08 职场文书
女方回门宴答谢词
2014/01/14 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python