fseek
(PHP 4, PHP 5, PHP 7)
fseek — ファイルポインタを移動する
説明
$handle
, int $offset
[, int $whence = SEEK_SET
] ) : int
handle が指しているファイルのファイル位置識別子を
ファイル・ストリーム中の offset バイト目に
セットします。新規位置は、ファイルの先頭からのバイト数で
測られます。これは whence で指定した位置に
offset を追加することにより得られます。
一般的に、ファイルの終端より先の位置に移動することも許されています。 そこにデータを書き込んだ場合、ファイルの終端からシーク位置までの範囲を読み込むと 値 0 が埋められたバイトを返します。しかし、ストリームの種類によっては この挙動をサポートしていないものもあります。 ストリームのもとになっているストレージが固定長である場合などです。
パラメータ
-
handle -
fopen() を使用して作成したファイルシステムポインタリソース。
-
offset -
オフセット。
ファイルの終端から数えた位置に移動するには、負の値を
offsetに渡してwhenceをSEEK_ENDに設定しなければなりません。 -
whence -
whenceの値は以下のようになります。SEEK_SET- 位置をoffsetバイト目に設定するSEEK_CUR- 現在の位置にoffsetを加えた位置に設定するSEEK_END- ファイル終端にoffsetを加えた位置に設定する
返り値
成功すると 0 を返し、そうでなければ -1 を返します。
例
例1 fseek() の例
<?php
$fp = fopen('somefile.txt', 'r');
// データを読み込む
$data = fgets($fp, 4096);
// ファイルの先頭に移動する。
// rewind($fp); と等価。
fseek($fp, 0);
?>
注意
注意:
追加モード (a あるいは a+) でファイルをオープンした場合、 ファイル位置によらず、ファイルに書き込むあらゆるデータが追加されます。また fseek() の結果は未定義となります。
注意:
すべてのストリームがシーク処理に対応しているわけではありません。 シークに対応していないストリームで現在位置から前方へのシークを行うには、 データを読み込んでそれを捨てていくしかありません。それ以外のやり方は失敗します。