0

「test.txt」ファイルに次のコンテンツがあります: lucas
ファイル内のポインターをシークし、先に情報をオーバーライドしたい。私がすることを仮定:

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

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

var_dump($f->ftell());

$f->fwrite('one');

これにより、 oneasが生成されますが、実行結果はlucasone です。

私はコード ロジックに夢中ですか、それとも動作しませんか?

私がやりたいことをする正しい方法はどうですか?

4

1 に答える 1

3

追加するためにファイルを開きました:

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

つまり、ファイルをシークできません。代わりに、読み書き用に開きます。

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

彼らはまた、 fseek documentationでそれを言います:

ファイルを追加 (a または a+) モードで開いた場合、ファイルに書き込むデータは、ファイルの位置に関係なく常に追加され、fseek() を呼び出した結果は未定義になります。

于 2012-05-01T16:00:41.130 に答える