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数据库连接
Oct 09 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
PHP 调试工具Debug Tools
Apr 30 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
php实现分页显示
Nov 03 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
php中类和对象:静态属性、静态方法
Apr 09 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 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 json_encode奇怪问题说明
2011/09/27 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python获取服务器信息的最简单实现方法
2015/03/05 Python
python daemon守护进程实现
2016/08/27 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
python 实现两个npy档案合并
2020/07/01 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
会计毕业生自荐信
2013/11/21 职场文书
三好学生自我鉴定
2013/12/17 职场文书
创建文明学校实施方案
2014/03/11 职场文书
村级个人对照检查材料
2014/08/22 职场文书
临时租车协议范本
2014/09/23 职场文书
简易离婚协议书范本
2014/10/24 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
大雁塔导游词
2015/02/04 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android