Почему обработчик файлов PHP не работает должным образом?

У меня есть этот контент в файле 'test.txt': lucas
Я хочу найти указатель в файле и переопределить информацию вперед. Предполагается, что я делаю:

$f = new SplFileObject('test.txt', 'a');

$f->fseek(-5, SEEK_END);

var_dump($f->ftell());

$f->fwrite('one');

Это должно привести к: oneas Но результат выполнения: lucasone

Я без ума от логики кода или даже не работает?

Как правильно делать то, что я хочу?

1 ответ

Вы открыли файл для добавления:

$f = new SplFileObject('test.txt', 'a');

что означает, что вы не можете искать в файле. Вместо этого откройте его для чтения и записи:

$f = new SplFileObject('test.txt', 'r+');

Они также говорят это в документации fseek:

Если вы открыли файл в режиме добавления (a или +), любые данные, которые вы записываете в файл, всегда будут добавлены, независимо от положения файла, и результат вызова fseek() будет неопределенным.

Другие вопросы по тегам