【发布时间】:2014-07-19 01:49:04
【问题描述】:
在下面的代码中我...
打开一个文本文件,写入四个字符,然后再次关闭,
重新打开,读取内容,使用filesize报告文件大小。 (应该是 4),
处理这些内容并添加另外四个字符。然后我将该新字符串写入文本文件并再次关闭它,
再次使用 filesize 来报告文件的大小。
令我惊讶的是,即使文件的实际大小是 8,它给出的答案仍然是 4!检查文件内容证明写入有效,内容长度为8。
发生了什么事??
顺便说一句,我必须使用 fread 和 fwrite 而不是 file_get_contents 和 file_put_contents。至少我认为我会。这个小程序是使用“flock”的垫脚石,所以我可以读取文件的内容并重写它,同时确保没有其他进程在中间使用该文件。而且 AFAIK 群不适用于 file_get_contents 和 file_put_contents。
请帮忙!
<?php
$filename = "blahdeeblah.txt";
// Write 4 characters
$fp = fopen($filename, "w");
fwrite($fp, "1234");
fclose($fp);
// read those characters, manipulate them, and write them back (also increasing filesize).
$fp = fopen($filename, "r+");
$size = filesize($filename);
echo "size before is: " . $size . "<br>";
$t = fread($fp, $size);
$t = $t[3] . $t[2] . $t[1] . $t[0] . "5678";
rewind($fp);
fwrite($fp, $t);
fclose($fp);
// "filesize" returns the same number as before even though the file is larger now.
$size = filesize($filename);
echo "size after is: " . $size . " ";
?>
【问题讨论】:
标签: php fopen fwrite filesize fread