fseek
(PHP 4, PHP 5, PHP 7)
fseek — ファイルポインタを移動する
説明
fseek
( resource $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() の結果は未定義となります。
注意:
すべてのストリームがシーク処理に対応しているわけではありません。 シークに対応していないストリームで現在位置から前方へのシークを行うには、 データを読み込んでそれを捨てていくしかありません。それ以外のやり方は失敗します。