php - 文件大小(): giving incorrect result

标签 php file io size

我正在测试一个用于修改文件的工具,在此过程中一个相当重要的功能是告诉文件大小,尤其是当文件仍然打开时。

$file = tempnam('/tmp', 'test_');
file_put_contents($file, 'hello world');

echo 'Initial Read: ' . file_get_contents($file).PHP_EOL;

echo 'Initial Size: ' . filesize($file).PHP_EOL;

$fp = fopen($file, 'a');
fwrite($fp, ' then bye');

echo 'Final Read:   ' . file_get_contents($file).PHP_EOL;

fclose($fp);
echo 'Final Size:   ' . filesize($file).PHP_EOL;

这个简单的脚本给出了一些奇怪的结果:

Initial Read: hello world
Initial Size: 11
Final Read:   hello world then bye
Final Size:   11

我认为最终大小应该是文件仍处于打开状态的结果,这就是我添加 fclose($fp); 的原因,但这没有任何区别。无论哪种方式,我都需要能够在文件仍处于打开状态时确定大小。

最终大小应该是 20。有谁知道这可能的原因以及如何解决它?

最佳答案

作为this comment说明,您需要先调用 clearstatcache(),然后再调用 filesize()

$file = tempnam('/tmp', 'test_');
file_put_contents($file, 'hello world');

echo 'Initial Read: ' . file_get_contents($file).PHP_EOL;

echo 'Initial Size: ' . filesize($file).PHP_EOL;

$fp = fopen($file, 'a');
fwrite($fp, ' then bye');

echo 'Final Read:   ' . file_get_contents($file).PHP_EOL;

fclose($fp);
clearstatcache();

echo 'Final Size:   ' . filesize($file).PHP_EOL;

关于php - 文件大小(): giving incorrect result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25833610/

相关文章:

PHP 代码无法在远程服务器上运行

c++ - 我有一个由 0's and 1' 组成的字符串。如何将二进制格式的 0's and 1' 存储在文件中?

java - 用户输入到java中的文本文件中

io - 如何使用Scheme中的read函数?我知道它在语法上是如何工作的,但控制台不允许我输入值

PHP: Json解码错误

javascript - ajax 从成功的 View 中删除 div

javascript - PHP 邮件显示没有链接的文本

android - 从 Android 设备的 SD 卡中存在的 txt 文件读取数据

html - 如何在 objective-c 中创建 html 文件?

java - 如何在 Java 中测量磁盘速度以进行基准测试