<?php
//打开目录
$d=dir("G:/php/123");echo "Handle:".$d->handle."<br>\n";
echo "Path:".$d->path."<br>\n";//循环输出
while(false!==($file=$d->read())){
   echo $file."<br>\n";
}$d->close();
?>
输出结果:
Handle:Resource id #2
Path:G:/php/123
.      “当前目录”
..     “上级目录”
456
为什么输出结果会这样的? $d->read() 函数不是返回当前目录指针位置的一个文件名,并将目录指针向后移动以为的吗?为什么会返回当前目录“.”,还有“..”?到底目录指针是怎么移动的?  上级目录又是什么?

解决方案 »

  1.   

    每个文件夹在创建时都会有两个系统文件夹. 一个是 . ,意思是当前的文件夹. 另一个是 .. 指当前文件夹的父文件夹(上级文件夹).当然在WINDOWS 下你是看不到的.在DOS 下就能看到了用cmd进行下面命令
    G:
    cd php/123
    dir你将能看到 这两个文件夹
      

  2.   

    这两个是一定有的,你不想要,可以过虑掉
    $file=$d->read();
    $file=$d->read();
    循环前先读两次就可以。
      

  3.   

    因为根据linux是文件系统,什么都是以文件在形式显示在,所以它在每个目录都会有当前目录,和上级目录的