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+ajax 无刷新删除数据
Feb 20 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
yii中widget的用法
Dec 03 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 PHP
Laravel中间件实现原理详解
Oct 09 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
jquery 指南/入门基础
2007/11/30 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python正则表达式完全指南
2017/05/25 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
python的help函数如何使用
2020/06/11 Python
详解如何修改python中字典的键和值
2020/09/29 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
CSS3 文字动画效果
2020/11/12 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
视光学专业毕业生推荐信
2013/10/28 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
小学生家长评语集锦
2014/01/30 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
公司收款委托书范本
2014/09/20 职场文书
标枪加油稿
2015/07/22 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
MySQL表字段时间设置默认值
2021/05/13 MySQL