首页 > 解决方案 > 文件的 filesize() 不显示实际文件大小

问题描述

我有以下代码:

<?php
    for ($i = 0; $i < 6; $i++) {
        $file = fopen( 'dummy.txt', 'a' );
        echo filesize('dummy.txt') . "<br>";
        fwrite($file, "b\n");
        echo filesize('dummy.txt') . "<br>";
        fclose($file);
    }
?>

它产生:

0
0
0
0
0
0
0
0
0
0
0
0

但是,当我打开我的dummy.txt文件时,它表明我已经成功写出了我想要的字母。当我每次迭代清楚地写入文本文件然后关闭所述文件时,我不明白如何filesize()显示具有大小的文件。0有人可以启发我吗?

标签: php

解决方案


您正在查看一个打开的文件,您需要在调用 filesize() 之前通过插入对 clearstatcache() 的调用来关闭文件并清除缓存

文件大小手册页:http: //php.net/manual/en/function.filesize.php

代码应为:

<?php
    for ($i = 0; $i < 6; $i++) {
        $file = fopen( 'dummy.txt', 'a' );
        fwrite($file, "b\n");
        fclose($file);
        clearstatcache();
        echo filesize('dummy.txt') . "<br>";
    }
?>

推荐阅读