常见的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';
输出结果如下图: