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抓取https的内容的代码
Apr 06 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 PHP
php插入mysql数据返回id的方法
May 31 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
PHP 超级全局变量相关总结
Jun 30 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
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
第四章 php数学运算
2011/12/30 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
PHP xpath()函数讲解
2019/02/11 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
JavaScript运算符小结
2015/06/03 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Django的CVB实例详解
2020/02/10 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
文史专业毕业生自荐信
2013/11/17 职场文书
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
学生安全责任书模板
2014/07/25 职场文书
公民授权委托书范本
2014/09/17 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书