Php 带有c/c+;模式
就我所理解的c/c+模式而言,我期望类似于“a/a+模式”的行为,因此文件不应该被截断,任何fwrite()结果都应该在现有文件的前面 事实上,该文件似乎无论如何都会被截断,因为该文件始终只包含最后一个fwrite()内容 这是我的PHP版本(7.0)中可能存在的错误,还是我误解了什么Php 带有c/c+;模式,php,fread,Php,Fread,就我所理解的c/c+模式而言,我期望类似于“a/a+模式”的行为,因此文件不应该被截断,任何fwrite()结果都应该在现有文件的前面 事实上,该文件似乎无论如何都会被截断,因为该文件始终只包含最后一个fwrite()内容 这是我的PHP版本(7.0)中可能存在的错误,还是我误解了什么 <?php $fp = fopen($fpath,'c+'); fwrite($fp, date("H:i:s")." test\n"); fclose($fp); 是什么让你认为这应该表现不同?根据文档
<?php
$fp = fopen($fpath,'c+');
fwrite($fp, date("H:i:s")." test\n");
fclose($fp);
是什么让你认为这应该表现不同?根据文档,使用c
将指针“定位在文件的开头”。从该特定位置开始写入时,您总是会覆盖该文件中已经存在的任何内容是什么让您认为这应该表现出不同的行为?根据文档,使用c
将指针“定位在文件的开头”。从该特定位置开始写入时,您将始终覆盖该文件中已存在的内容可能是对所述内容的一个小补充:
<?php
/* file test.txt contains string(4): 'test' */
$fp = fopen('test.txt','c+');
fclose($fp);
文件test.txt
现在包含:best
,文件指针位于文件的开头,只覆盖原始文件中的第一个字符-test
已成为best
可能是对前面所说内容的一个小小补充:
<?php
/* file test.txt contains string(4): 'test' */
$fp = fopen('test.txt','c+');
fclose($fp);
文件test.txt
现在包含:best
,文件指针位于文件开头,仅覆盖原始文件中的第一个字符-test
已成为best
打开时不会截断文件。但你凭什么认为它会在文件前出现?即使没有指定(据我所知),fwrite
也可能会覆盖数据。一个人在中对此进行了评论。这并不是对你问题的回答,但如果你只是想添加内容,你可以使用file\u put\u contents($file,$content,file\u append)代码>取而代之。更短更简单。@fredrik谢谢你,这就解释了一切@MagnusEriksson这绝对是目前最好的解决方案。谢谢它可以使用标志LOCK\u EX
进行锁定。因此,只需同时使用文件|附加|锁定_EX
。它不会在打开时截断文件。但你凭什么认为它会在文件前出现?即使没有指定(据我所知),fwrite
也可能会覆盖数据。一个人在中对此进行了评论。这并不是对你问题的回答,但如果你只是想添加内容,你可以使用file\u put\u contents($file,$content,file\u append)代码>取而代之。更短更简单。@fredrik谢谢你,这就解释了一切@MagnusEriksson这绝对是目前最好的解决方案。谢谢它可以使用标志LOCK\u EX
进行锁定。因此,只需使用FILE_APPEND | LOCK_EX
。非常感谢。我关注的是“模式”,完全忽略了fwrite()的行为。非常感谢。我专注于“模式”,完全忽略了fwrite()的行为。