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 中英文混合排版中处理字符串常用的函数
Apr 12 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
fgetcvs在linux的问题
Jan 15 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
Mar 18 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
thinkphp实现分页显示功能
Dec 03 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 PHP
php简单检测404页面的方法示例
Aug 23 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 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
调频问题解答
2021/03/01 无线电
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
关于js注册事件的常用方法
2013/04/03 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
bootstrap table表格插件使用详解
2017/05/08 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python 获取文件列表(或是目录例表)
2009/03/25 Python
Python WEB应用部署的实现方法
2019/01/02 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
python web框架 django wsgi原理解析
2019/08/20 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
keras中的History对象用法
2020/06/19 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
军训自我鉴定怎么写
2014/02/13 职场文书
会计助理岗位职责
2014/02/17 职场文书
拖欠货款起诉状
2015/05/20 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
教师节校长致辞
2015/07/31 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript