PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
作者:junjie 发布时间:2024-05-03 15:53:21
在进行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()函数检索指定的目录。该函数最终返回一个包含检索结果的数组。


猜你喜欢
- Python 多线程多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可
- 视频本教程的视频选择图形我们谈到了 Opengameart.org,这是免费游戏艺术的重要来源,也是我们最喜欢的艺术家之一&ldqu
- 代码import osfrom PIL import Imageimport tkinterimport tkinter.filedialo
- 前言go不要求类型显示地声明实现了哪个接口,只要实现了相关的方法即可,编译器就能检测到空接口类型可以接收任意类型的数据:type eface
- 1.数据结构说明:数据结构如下:modification字段为修改数据时间字段,格式为 年,月,日,时,分,秒。案例场景为,根据modifi
- 平时再用js写函数的时候,一般都是以惯例 function fn () {} 的方式来声明一个函数,在阅读一些优秀插件的时候又不免见到 va
- 本文实例讲述了mysql语句实现简单的增、删、改、查操作。分享给大家供大家参考,具体如下:1、创建db_shop数据库,如果该数据库不存在则
- 如下所示:将不想索引的文件夹设置为Excluded Folders 及设置检索不包括的文件File - Settings - -> P
- blankzheng的blog:http://www.planabc.net/margin在中文中我们翻译成外边距或者外补白(本文中引用外边
- eval() 和 exec() 函数都属于 Python 的内置函数,由于这两个函数在功能和用法方面都有相似之处,所以将它们放到一节进行介绍
- 相信很多程序员在调试代码时,都用过 print。代码少还好说,如果是大型项目,面对众多 print 的输出结果,可能要头大了。今天推荐一个
- 1.requests库简介requests 是 Python 中比较常用的网页请求库,主要用来发送 HTTP 请求,在使用爬虫或测试服务器响
- 微信小程序 报错:this.setData is not a function在page中定义的代码如下,代码会报错:this.setDat
- 输入汉字提示拼音,试试下面这个函数,不知是不是你要的那个:查询汉字便宜到词典网<%function getpychar(ch
- 本文实例讲述了Python 实现的微信爬虫。分享给大家供大家参考,具体如下:单线程版:import urllib.requestimport
- 注:IE8以前的版本均不支持该特性为了向文档中插入生成内容,可以使用:before与:after伪元素。如,我想在所有链接的后面加上&quo
- 一、系统环境yum update升级以后的系统版本为[root@yl-web yl]# cat /etc/redhat-release Ce
- webpack代码拆分webpack有两种组织模块依赖的方式,同步和异步。异步依赖作为分割点,形成一个新的块,在优化了依赖树后,每一个异步区
- 本文实例为大家分享了js浏览器倒计时跳转页面效果,供大家参考,具体内容如下效果图:<!DOCTYPE html><html
- 有时我们会碰到类似下面这样的 unicode 字符串:u'\xe4\xbd\xa0\xe5\xa5\xbd'这明显不是一个正