假设我们有这个文件 test.txt:
{}
我们想在{
和之间添加文本}
。
我试过这个:
$f = new SplFileObject($filepath, 'r+');
$f->fseek(1);
$f->fwrite('test');
但输出是{test
,我也尝试了其他模式,如w+
(result-> test
)、a+
(result->{}test
编辑:忘了告诉我不想将文件的所有内容加载到内存中,这就是我使用的原因SplFileObject
假设我们有这个文件 test.txt:
{}
我们想在{
和之间添加文本}
。
我试过这个:
$f = new SplFileObject($filepath, 'r+');
$f->fseek(1);
$f->fwrite('test');
但输出是{test
,我也尝试了其他模式,如w+
(result-> test
)、a+
(result->{}test
编辑:忘了告诉我不想将文件的所有内容加载到内存中,这就是我使用的原因SplFileObject
您必须将文件加载到内存中才能进行这种转换——至少是文件的一部分。这就是记忆的用途。您可以读取一个文件并在修改后写入另一个文件,以避免将整个文件保留在内存中。
如有必要,然后删除旧文件并将新文件重命名为旧文件。
将文件的全部内容作为字符串读取,并在其中写入内容: 在指定位置插入字符串
然后保存文件W+
It's not possible to insert something into the middle of a file. All you can do is read in all the data after the position you want to write, and write it back later.