PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结_php技巧

在进行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()函数检索指定的目录。该函数最终返回一个包含检索结果的数组。

时间: 2024-08-01 20:11:39

PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结_php技巧的相关文章

php 目录操作( opendir(),readdir(),closedir )

 rmdir($path) 将删除路径在$path的文件.( 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出:  代码如下 复制代码 <?php $base_dir    =    "filelist/"; $fso        =    opendir($base_dir); echo    $base_dir."<hr/>"        ; while

目录函数库:closedir

closedir (PHP3 , PHP4) closedir ---&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 关闭目录处理 语法 : void closedir (int dir_handle); 说明 : 关闭参数dir_handle指示的目录流(stream),dir_handle指示的目录流必须是先前以opendir( )所开启的.

使用PHP遍历文件目录与清除目录中文件的实现详解_php技巧

今天无聊中练习了一下PHP遍历文件目录的程序,编写了以下两个程序,不过质量不是很好,轻拍~~~1.清除PHP缓存文件 复制代码 代码如下: <?php  function read_dir($dir,$file)  {      $a =strpos($file,".php");      if($a>0)       {          unlink($dir . $file);          echo "delete $dir$file <br&g

php查找指定目录下指定大小文件的方法_php技巧

本文实例讲述了php查找指定目录下指定大小文件的方法.分享给大家供大家参考.具体实现方法如下: php查找文件大小的原理是遍历目录然后再利用filesize来计算文件大小,然后我们再加一判断就可以了,下面整理了一些例子. 我们先来看遍历目录,代码如下: 复制代码 代码如下: function tree($directory)  {   $mydir = dir($directory);   echo "<ul>n";   while($file = $mydir->r

php目录处理函数opendir,readdir

第九章(6)文件处理之目录操作(一) opendir(目标目录名称) 打开目录的函数. readdir(已打开的目标目录名称) 读取目录的函数. closedir(已打开的目标目录名称) 关闭目录的函数. rewinddir(已打开的目标目录名称) 将目录指针重新指向目录开头的函数. glob(详解参数查看php手册) 检索目录的函数. mkdir(1.要建立的目录名称 2.可选访问权限长度) 建立目录的函数. rmdir(目标目录函数,但只能删除空白目录) 删除目录的函数. 实例应用删除有文件

php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码_php技巧

<pre> <?php /********************** 一个简单的目录递归函数 第一种实现办法:用dir返回对象 ***********************/ function tree($directory) { $mydir=dir($directory); echo "<ul>\n"; while($file=$mydir->read()){ if((is_dir("$directory/$file"))

php遍历替换目录下文件指定内容的方法_php技巧

本文实例讲述了php遍历替换目录下文件指定内容的方法.分享给大家供大家参考,具体如下: 在php中目录访问需要遍历了然后文件需要一个个打开进行访问操作了,下面我们来看一段php 替换目录下文件指定内容,具体如下: /**************************** * 获取目录下的所有文件 * [$dir] 文件夹路径 ****************************/ function deepScanDir($dir) { $fileArr = array (); $dirA

php遍历目录输出目录及其下的所有文件示例_php技巧

好多次笔试都会遇到这个问题,所以特意给写了出来 复制代码 代码如下: function my_scandir($dir){ $files=array(); if(is_dir($dir)){ if($handle=opendir($dir)){ while(($file=readdir($handle))!==false){ if($file!='.' && $file!=".."){ if(is_dir($dir."/".$file)){ $fil

php使用number_format函数截取小数的方法分析_php技巧

本文实例讲述了php使用number_format函数截取小数的方法.分享给大家供大家参考,具体如下: 大家知道用php的number_format()函数可以将数字按千分组. 但是它会使数字四舍五入, 那有没有办法能让它直接舍弃保留位后面的小数而不进行四舍五入呢?各位别急,且听我细细道来,如果你想保留两位小数,可以把你的数字-0.005 例如: 123456.6588 你想要得结果是: 123,456.65 你可以这样: $num=123456.6588; echo number_format