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编程最快明白》第三讲:php数组
Nov 01 PHP
二进制交叉权限微型php类分享
Feb 07 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
Ubuntu12下编译安装PHP5.3开发环境
Mar 27 PHP
php关联数组快速排序的方法
Apr 17 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
Thinkphp 中 distinct 的用法解析
Dec 14 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
360搜索引擎自动收录php改写方案
Apr 28 PHP
微信小程序和php的登录实现
Apr 01 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下关于中英数字混排的字符串分割问题
2010/04/06 PHP
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
java必学必会之static关键字
2015/12/03 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
Vue发布项目实例讲解
2019/07/17 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
Python快速从注释生成文档的方法
2016/12/26 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
python ubplot使用方法解析
2020/01/10 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
计划生育宣传标语
2014/06/21 职场文书
班主任先进事迹材料
2014/12/17 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
整脏治乱工作简报
2015/07/21 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL