説明
int fseek(resource $stream
, int $offset
, int $whence
= SEEK_SET
)
一般的に、ファイルの終端より先の位置に移動することも許されています。
そこにデータを書き込んだ場合、ファイルの終端からシーク位置までの範囲を読み込むと
値 0 が埋められたバイトを返します。しかし、ストリームの種類によっては
この挙動をサポートしていないものもあります。
ストリームのもとになっているストレージが固定長である場合などです。
パラメータ
-
stream
-
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 の結果は未定義となります。
注意:
すべてのストリームがシーク処理に対応しているわけではありません。
シークに対応していないストリームで現在位置から前方へのシークを行うには、
データを読み込んでそれを捨てていくしかありません。それ以外のやり方は失敗します。