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函数
Feb 16 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
Laravel框架中缓存的使用方法分析
Sep 06 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面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
vue二级路由设置方法
2018/02/09 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
在Python中使用第三方模块的教程
2015/04/27 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
Python实现端口检测的方法
2018/07/24 Python
python实现点对点聊天程序
2018/07/28 Python
python 字符串常用方法汇总详解
2019/09/16 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
python数据分析:关键字提取方式
2020/02/24 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
生产副总岗位职责
2013/11/28 职场文书
给老师的一封建议书
2014/03/13 职场文书
师德师风承诺书
2014/05/23 职场文书
假期安全教育广播稿
2014/10/04 职场文书
出纳工作检讨书
2014/10/18 职场文书
单位工资证明范本
2015/06/12 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
机械生产实习心得体会
2016/01/22 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技