最近在做项目时遇到了目录操作有关的函数,在这里将其总结出来,与大家进行分享.
在进行PHP编程时,需要对服务器某个目录下面的文件进行浏览,通常成为遍历目录。
取得一个目录下的文件和子目录,就需要用到opendir()函数、readdir()函数、closedir()函数和rewinddir()函数。
opendir()
函数opendir()用于打开指定目录,接受一个目录的路径及目录名作为参数,
函数返回值为可供其他目录函数使用的目录句柄(资源类型)。如果该目录不存在或者没有访问权限,则返回FALSE。
readdir()
函数readdir()用于读取指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数,
函数返回当前目录指针位置的一个文件名,并将目录指针向后移动一位。当指针位于目录的结尾时,因为没有文件存在则返回FALSE。
closedir()
函数closedir()关闭指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数。
函数无返回值,运行后关闭打开的目录。
rewinddir()
函数reweinddir()倒回目录句柄,接受已经用opendir()函数打开的可操作目录句柄作为参数。
将目录指针重置目录到开始处,即倒回目录的开头。
PS:
1.string getcwd();//获取当前的工作目录
2.array scandir(string dir[,int stringorder]);//该函数返回一个数组
3.dir(string dir);//将指定的目录名转化为一个对象放回
4.chdir(string dir);//改变php的当前目录
there is a demo:
<?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>个';
?>
在这里要特别声明:readir()函数会将"." and ".."读取出来,如果不想像是可以这样:
$file=readir($f);
if($file!="." and $file!=".."){
echo"xxxxxx";
}
动手写一下吧.加油。