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 相关文章推荐
coreseek 搜索英文的问题详解
Jun 08 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
PHP基本语法实例总结
Sep 09 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 PHP
php apache开启跨域模式过程详解
Jul 08 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
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
javascript中的面向对象
2017/03/30 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
Python接口开发实现步骤详解
2020/04/26 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
机关作风建设自查报告
2014/10/22 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
企业安全生产检查制度
2015/08/06 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers