带有 r+ 的 fopen() 就像一个?
fopen() with r+ acts like a?
这是我见过的最奇怪的东西。
$filename = "/etc/httpd/conf/httpd.conf";
$handle = fopen($filename, "r+");
$size = filesize($filename);
$contents = fread($handle, $size);
fwrite($handle,$contents);
fclose($handle);
这不是应该读取文件的内容然后再写入吗?基本上不修改文件?此时这段代码的作用与 append 完全相同,它复制了文件的内容,在文件末尾添加了 $contents,我不知道为什么。我尝试在写入之前稍微更改一下字符串,这就是我发现它写入末尾而不是开头的原因。
您的 fread()
正在推进文件指针,以便在您调用 fwrite
时,您的文件指针位于末尾并且您的写入从那里追加到文件。
如果你想在文件全部读完后从头开始写,那么:
rewind($handle);
这是我见过的最奇怪的东西。
$filename = "/etc/httpd/conf/httpd.conf";
$handle = fopen($filename, "r+");
$size = filesize($filename);
$contents = fread($handle, $size);
fwrite($handle,$contents);
fclose($handle);
这不是应该读取文件的内容然后再写入吗?基本上不修改文件?此时这段代码的作用与 append 完全相同,它复制了文件的内容,在文件末尾添加了 $contents,我不知道为什么。我尝试在写入之前稍微更改一下字符串,这就是我发现它写入末尾而不是开头的原因。
您的 fread()
正在推进文件指针,以便在您调用 fwrite
时,您的文件指针位于末尾并且您的写入从那里追加到文件。
如果你想在文件全部读完后从头开始写,那么:
rewind($handle);