【 tulaoshi.com - PHP 】
                             
                               <? 
//以树型结构列出指定目录里的所有文件,如果你想知道自己某个目录里有哪些子目录和文件,可以调用这个类来查看,很方便的。 
    # 演示的例子: 
    $t = new TreeClimber( "asp" ); //新建物件,设置需要列出的目录:在此为asp目录 
    echo arrayValuesToString( $t-getFileList( $t-getPath() ), "<BRn" );     
    function arrayValuesToString( $ar, $nl="", $dolast=true ) {//调用函数 
    $str = ""; 
    reset( $ar ); 
    $size = sizeof( $ar ); 
    $i = 1; 
    while( list( $k, $v ) = each( $ar ) ) { 
    if ( $dolast == false ) { 
    if ( $i < $size ) { 
        $str .= $ar[$k].$nl; 
    } 
    else { 
        $str .= $ar[$k]; 
    } 
    } 
    else { 
    $str .= $ar[$k].$nl; 
    } 
    $i++; 
    } 
    return $str; 
    } 
    ? 
    <? 
    //以下为类文件 
    class TreeClimber { 
    var $path; 
    var $fileList = array(); 
    function TreeClimber( $path = "." ) { 
    $this-path = $path; 
    }     
    # 存取路径 
    function getPath() { return $this-path; } 
    function setPath( $v ) { $this-path = $v; }     
    // 返回指定目录里的文件列表,如果没有指定目录,将使用当前目录 
    //如果不能打开目录(可能没权限或目录不存在,将返回为空 
    //以递归方式进行 
     function getFileList( $dirname=null, $returnDirs=false, $reset=true ) { 
    if ( $dirname == null ) { $dirname = $this-path; } 
    # else { $this-setPath( $dirname ); } 
    # dout( "Recursing into $dirname..." ); 
    if ( $reset ) {  
    $this-fileList = array(); 
    } 
    $dir = opendir( $dirname ); 
    if ( ! $dir ) {  
    print( "<B<FONT COLOR=#FF0000注意: TreeClimber.getFileList( $dirname ): 不能打开 $dirname!</FONT</B" ); 
    return null;  
    } 
    while( $file = readdir( $dir ) ) { 
    if ( ereg( "^.$", $file ) || ereg( "^..$", $file ) ) continue; 
    if ( is_dir( $dirname."/".$file ) ) { 
    $this-getFileList( $dirname."/".$file, $returnDirs, false ); 
    if ( $returnDirs ) { $this-fileList[] = $dirname."/".$file;} 
    } 
    else { $this-fileList[] = $dirname."/".$file; } 
    } 
    sort( $this-fileList ); 
    return $this-fileList; 
    } 
    } //至此类结束 
    ?