Почему обработчик файлов 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() будет неопределенным.