【问题标题】:Why PHP file handler doesn't work properly?为什么 PHP 文件处理程序不能正常工作?
【发布时间】:2012-05-01 15:58:20
【问题描述】:

我在“test.txt”文件中有以下内容:lucas
我想在文件中寻找指针并覆盖前面的信息。假设我这样做:

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

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

var_dump($f->ftell());

$f->fwrite('one');

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

我对代码逻辑很着迷,甚至无法正常工作?

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

【问题讨论】:

    标签: php file fseek splfileobject


    【解决方案1】:

    您打开文件进行追加:

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

    这意味着您无法在文件中查找。相反,打开它进行读写:

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

    他们也在fseek documentation

    如果您以追加(a 或 a+)模式打开文件,则无论文件位置如何,您写入文件的任何数据都将始终被追加,并且调用 fseek() 的结果将是未定义的。

    【讨论】:

    • 嗯...我更改了模式,但文件被截断了!根据 PHP 官网:w 模式:“只为写入而打开;将文件指针放在文件的开头,并将文件 TRUNCATE THE FILE TO ZERO LENGTH。如果文件不存在,请尝试创建它。”我不想截断文件,我想要这个结果:“oneas”
    • 好的,当您阅读文档时...您为什么不选择不截断文件的其他模式?它就在同一个文档页面上。
    • 例如“r+” 这样做:“打开以进行读写;将文件指针放在文件的开头。”我会更新我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2020-09-19
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    相关资源
    最近更新 更多