2012-05-01 205 views
0

我在'test.txt'文件中包含以下内容:lucas
我想在文件中寻找指针并覆盖未来的信息。应该我做的:为什么PHP文件处理程序无法正常工作?

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

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

var_dump($f->ftell()); 

$f->fwrite('one'); 

这将产生:oneas但执行的结果:lucasone

我非常喜欢的代码逻辑,甚至不工作呢?

如何正确地做我想做的事?

回答

3

您打开该文件进行追加:

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

这意味着你不能在文件中寻求。相反,打开它,阅读和写作:

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

他们还表示,它在fseek documentation

如果你已经打开以附加文件(A或A +)模式,你写任何数据无论文件位置如何,该文件将总是被追加,并且调用fseek()的结果将是未定义的。

+0

那么......我改变了模式,但文件被截断了!根据PHP官方网站:w模式:“打开仅用于写入;将文件指针放在文件的开头,并将文件截断为零长度,如果文件不存在,请尝试创建它。我不想截断文件,我想要这个结果:“oneas” –

+0

当你正在阅读文档时,确定...为什么你不选择不截断文件的不同模式?它就在同一个文档页面上。 – kuba

+1

例如“r +”这样做:“打开读取和写入;将文件指针放在文件的开头。”我会更新我的答案 – kuba

相关问题