PHP中输出一张表格,能显示当前目录下所有文件的信息,文件名,创建时间、修改时间、最后访问时间、文件大小(单位kb,保留小数点后2位)、文件权限、文件所有者

解决方案 »

  1.   

    ……
    scandir(./) — 列出指定路径中的文件和目录foreach循环(用isdir去掉文件夹类型)
    fileatime — 取得文件的上次访问时间
    filectime — 取得文件的 inode 修改时间
    filegroup — 取得文件的组
    fileinode — 取得文件的 inode
    filemtime — 取得文件修改时间
    fileowner — 取得文件的所有者
    fileperms — 取得文件的权限
    filesize — 取得文件大小
    filetype — 取得文件类型
    谁有空帮他写吧,我pass
      

  2.   


    <?php
        echo "<table id=\"fileinfo\" name=\"fileinfo\" border=\"2\"><tbody>";
    echo "<tr><td>文件/目录名</td><td>文件大小</td><td>文件修改时间</td><td>文件权限</td><td>文件所有者</td></tr>";
        foreach(glob("b/*") as $files)

     if(is_dir($files))
         echo "<tr><td colspan='5'><font color=red>目录为:".$files."</font></td></tr>";
     else
     echo "<tr><td>".$files."</td><td>".number_format((float)(filesize($files)/1024),2)."kb</td><td>".date('Y-m-d h:i:s',filemtime($files))."</td><td>".fileperms($files)."</td><td>".fileowner($files)."</td><tr>";
    }
       echo "</tboyd></table>";
    ?>以上代码经过测试绝对OK!文件建立时间无法获取,其他都可以:PHP提供的库函数关于文件的只有:
    fileatime -- 取得文件的上次访问时间
    filectime -- 取得文件的 inode 修改时间
    filegroup -- 取得文件的组
    fileinode -- 取得文件的 inode
    filemtime -- 取得文件修改时间
    fileowner -- 取得文件的所有者
    fileperms -- 取得文件的权限
    filesize -- 取得文件大小
    filetype -- 取得文件类型
      

  3.   

    foreach(glob("b/*") as $files) 
    //这指的是获取目录b下所有的文件和文件夹,如果只想获取文件的话,可以这样:把glob("b/*")改为:glob("b/*.*")
      

  4.   

    如果楼主的系统是LINUX的,可以用posix_getpwuid(fileowner($files))用这个来获得真正的用户名。而不是windows下的fileowner($files)返回的ID,管理员是0
      

  5.   

      我不同意这种说法,理由如下:
    1.*.*未必就是文件,也可能是文件夹
    *.*无论在WIN还是LINUX下都不可能会包含文件夹,可以自己测试一下就知道了!
    2.*也未必不是文件
    这个肯定是返回文件和目录的!怎么可能未必不是文件呢?不管用(*或*.*)里的哪一个,事实是一定会返回文件的,而不是未必
    如果很复杂的东西倒是可以用可能/大概/未必,但是这个用法很明确,拿到PHP平台测试一下,就很清楚了。
    在win系统下:遍历一个目录,如果该目录含有文件和目录,那么:
    *    =》一定是目录和文件!
    *.*  =》一定是只包含文件!绝不会包含目录!
    我个人认为这种情况是100%可以肯定的结果,真的没必要用可能/未必/大概这种模凌两可的说法!
       欢迎指出特例,向你学习,谢谢!
      

  6.   

    我也反思一下,嘿嘿,单用*确实能返回全部,之前没测试你的代码已经处理了无论名字是否*.*,is_dir 能检测出来的
    用你的代码测试的,“6.jpg”是我建的一个目录文件/目录名  文件大小  文件修改时间  文件权限  文件所有者
    ./000.php  3.15kb  2011-04-25 01:49:32  33206  0
    ./001.php  0.16kb  2008-11-12 08:45:06  33206  0
    ./002.php  2.18kb  2010-05-13 07:57:10  33206  0
    ./1.pgn  1.50kb  2008-11-11 11:27:09  33206  0
    ./11.svg  3.90kb  2011-04-12 02:04:46  33206  0
    目录为:./6.jpg
    ./abc.svg  38.21kb  2011-04-12 02:20:06  33206  0
    ./alumni-group.svg  542.73kb  2011-04-10 03:19:31  33206  0
    ./document.png  0.11kb  2011-04-08 01:13:41  33206  0
    ./domxml.php  0.69kb  2009-07-25 08:51:30  33206  0
    ./new.svg  9.67kb  2011-04-11 03:35:53  33206  0
    ./pgn2fen.exe  188.00kb  2002-02-12 11:09:12  33279  0
    ./photo.xml  31.33kb  2010-01-27 10:58:09  33206  0
    ./script  151.42kb  2011-04-25 01:08:03  33206  0
    ./test.php  4.82kb  2011-04-07 02:57:33  33206  0
    ./tree-view.css  1.06kb  2009-07-21 01:59:42  33206  0
    ./tree-view.xsl  7.85kb  2009-07-21 01:57:18  33206  0
    ./unnamed0.svg  4.51kb  2011-04-10 04:19:21  33206  0 
      

  7.   

        确实如此,估计这个*.*只停留在扩展名的检测上。还没有深入到核心检测,就和系统filetype检测扩展名类似,只检测扩展名,但是如果改其他文件的扩展名,它也会认为是图片产生误报。道理应该类似的,是我太粗心了。没有注意这点,感谢指出!
      

  8.   


    楼主在循环里面写个判断目录或文件foreach(glob("b/*") as $files)
    {
    if(is_file)
    {
    ...
    }
    if(is_dir)
    {
    }
    }建议楼主看一下http://cn.php.net/manual/zh/function.glob.php
    里面有很多实例