我在“test.txt”文件中有这个内容:卢卡斯
我想在文件中寻找指针并覆盖前面的信息。假设我这样做:
$f = new SplFileObject('test.txt', 'a');
$f->fseek(-5, SEEK_END);
var_dump($f->ftell());
$f->fwrite('one');
这应该产生:oneas但执行的结果:lucasone
我对代码逻辑很着迷,甚至不起作用?
如何正确地做我想做的事?
我在“test.txt”文件中有这个内容:卢卡斯
我想在文件中寻找指针并覆盖前面的信息。假设我这样做:
$f = new SplFileObject('test.txt', 'a');
$f->fseek(-5, SEEK_END);
var_dump($f->ftell());
$f->fwrite('one');
这应该产生:oneas但执行的结果:lucasone
我对代码逻辑很着迷,甚至不起作用?
如何正确地做我想做的事?
您打开文件进行附加:
$f = new SplFileObject('test.txt', 'a');
这意味着您无法在文件中查找。相反,打开它进行读写:
$f = new SplFileObject('test.txt', 'r+');
他们还在fseek 文档中说:
如果您以追加(a 或 a+)模式打开文件,则无论文件位置如何,您写入文件的任何数据都将始终被追加,并且调用 fseek() 的结果将是未定义的。