为什么fopen(' file.txt',' r +')后跟write()截断文件?

时间:2014-07-10 12:34:25

标签: php fopen

我在Windows上测试这个PHP代码,它首先删除了file.txt内容,然后在其上写下新内容。

$f = fopen('file.txt', 'r+');
fwrite($f, "first-time");
fclose($f);

每次执行此代码并查看file.txt时,它都会有一个“第一次”。

我希望它在“旧文件”之前加上“第一次”。喜欢: first-timefirst-timefirst-time等等。

为什么r +在长度为零时表现得像w +一样?

2 个答案:

答案 0 :(得分:1)

回答您的问题:您的代码不会截断文件,只会覆盖以前的内容。

针对您想要实现的行为的快速而肮脏的解决方案:

<?php
$file_data = "Stuff you want to add\n";
$file_data .= file_get_contents('file.txt');
file_put_contents('file.txt', $file_data);
?>

答案 1 :(得分:0)

编辑: 答案可以在这里找到: How do I prepend file to beginning?

根据PHP fopen manual

  

'r +'开放阅读和写作;将文件指针放在文件的开头

     

'a +'开放阅读和写作;将文件指针放在文件的 end 。如果该文件不存在,请尝试创建它。

$f = fopen('file.txt', 'a+');
fwrite($f, "fisrt-time");
fclose($f);

因此,如果您想要添加内容,请使用+模式。