假设我们有这个文件测试.txt:
{}
我们想在{
和}
之间添加文本。
我试过这个:
$f = new SplFileObject($filepath, 'r+');
$f->fseek(1);
$f->fwrite('test');
但是输出是{test
的,我也尝试了其他模式,如w+
(结果> test
(,a+
(结果> {}test
编辑:忘了告诉我不想将文件的所有内容加载到内存中,这就是我使用SplFileObject
的原因
您必须将文件加载到内存中才能进行此类转换 — 至少是文件的一部分。 这就是记忆的用途。 您可以读取一个文件并写入另一个经过修改的文件,以避免将整个文件保留在内存中。
如有必要,请删除旧文件并将新文件重命名为旧文件。
将文件的全部内容作为字符串读取,并在其中写入一些内容:在指定位置插入字符串
然后使用 W+
保存文件
无法在文件中间插入某些内容。 您所能做的就是在要写入的位置之后读取所有数据,稍后再写回。