常见的php目录处理函数有以下几个:
- getcwd() :若成功,则返回当前工作目录,否则返回false;
- chdir():改变当前目录,若成功,返回true,否则返回false;
- opendir():打开一个目录,若成功,返回打开目录句柄的resource,否则返回false;
- mkdir():创建目录,若成功,返回true,否则返回false,如:mkdir("/path/to/my/dir", 0700);
- rmdir():尝试删除所指定的目录。 该目录必须是空的,而且要有相应的权限。成功时返回 true, 或者在失败时返回false;
- closedir():关闭目录句柄;
- readdir():readdir() 函数返回由 opendir() 打开的目录句柄中的条目。若成功,则该函数返回一个文件名,否则返回false。
- scandir():scandir() 函数返回一个数组,其中包含指定路径中的文件和目录。若成功,则返回一个数组,若失败,则返回false。如果 directory 不是目录,则返回布尔值false并生成一条 E_WARNING 级的错误。
- dir():dir() 函数打开一个目录句柄,并返回一个对象。这个对象包含三个方法:read() , rewind() 以及 close()。若成功,则该函数返回一个目录流,否则返回 false以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。
- realpath():realpath() 函数返回绝对路径。该函数删除所有符号连接(比如 '/./', '/../' 以及多余的 '/'),返回绝对路径名。若失败,则返回false。比如说文件不存在的话。
遍历一个目录下的所有目录及文件
我不得不说我被这个面试题给打败了2次,两次遇到这个题目我都得回想半天操作目录的函数有哪些个。这实在是一件很悲催的事!!!![]()
代码如下:
方法1:用dir()函数
function tree($directory)
{
$mydir=dir($directory);
echo "<ul>\n";
while($file=$mydir->read()){
$tmp = realpath($directory."/".$file);
if((is_dir($tmp))){
if(($file!=".") && ($file!=".."))
{
echo "<li><font color='red'><b>$file</b></font></li>\n";
tree($tmp);
}
}else{
echo "<li>$file</li>\n";
}
}
echo "</ul>\n";
$mydir->close();
}
tree($dir);
方法2:用scandir()函数
function tree1($directory){
if(is_dir($directory)){
$myarrdir = scandir($directory);
echo "<ul>\n";
for($i=0;$i<count($myarrdir);$i++){
if($myarrdir[$i] != "." && $myarrdir[$i] != ".."){
$tmp = realpath($directory."/".$myarrdir[$i]);
if(is_dir($tmp)){
echo "<li><font color='red'><b>$myarrdir[$i]</b></font></li>\n";
tree1($tmp);
}else{
echo "<li>$myarrdir[$i]</li>\n";
}
}
}
echo "</ul>\n";
}
}
//tree1($dir);
方法3:用readdir()函数
function tree2($directory){
if(is_dir($directory)){
$mydir = opendir($directory);
echo "<ul>\n";
while(($file = readdir($mydir)) !== false){
if($file != "." && $file != ".."){
$tmp = realpath($directory."/".$file);
if(is_dir($tmp)){
echo "<li><font color='red'><b>$file</b></font></li>\n";
tree2($tmp);
}else{
echo "<li>$file</li>\n";
}
}
}
echo "</ul>\n";
closedir($mydir);
}
}
tree2($dir);
除了这三种,好像还有别的方法,以后有时间再补充吧!
$dir = 'D:\Apache2.2\conf';
输出结果如下图: