问答详情
源自:1-3 列表显示文件及其大小

$handle = opendir($path);

$file = readdir($handle);(忽略目录的话)这里返回一个文件,为什么不能直接通过filesize($file)返回该文件的大小?

提问者:SCER 2014-08-22 00:58

个回答

  • King
    2014-08-22 10:31:22

    嗯 那就可以直接用filesize返回大小,如果是目录就不行了,需要将目录中的文件大小求和计算^_^...

  • 阿勇
    2014-09-04 09:27:09

    另外 readdir返回的是一个字符串类型;
    string  readdir     ([  resource $dir_handle   ] )


  • 阿勇
    2014-09-04 09:25:16

    必须指定路径,$file本来就是个字符串类型,你不指名全路径,你怎么能认为它就是一个文件呢?
    难道“a.php” 你就说他是个文件吗?它只是一个字符串而已!
    如果PHP中有文件类型  你可以把文件类型的值当做是文件,这样就不用指定全路径!


  • SCER
    2014-08-22 14:11:56

    <?php
    function readDirectory($path) {
    $files = opendir ( $path );
    while ( ($file = readdir ( $files )) !== false ) {
    if ($file != "." && $file != "..") {
     echo $file . ":          ";
    if (is_file ( $path."/".$file )) {
    //if(is_file($file)){
    echo 'It\'s file '."\n";
    } else if (is_dir ( $path."/".$file )) {
    echo 'It\'s dir '."\n";
    } else {
    echo 'unknown'."\n";
    }
    }
    }
    closedir ( $files );
    }
    readDirectory ( 'files' );

    is_file ( $path."/".$file )可以正确判断$file是否为文件,为啥is_file($file)不能?如果$file本身就是一个文件的话,is_file应该能够判断它才对吧?我用上面代码测试的时候,用is_file($file)判断是错误的.....