# fseek

(PHP 4, PHP 5, PHP 7)

fseek — 在文件指针中定位

### 说明

fseek ( resource `$handle` , int `$offset` [, int `$whence` = SEEK_SET ] ) : int

在与 `handle` 关联的文件中设定文件指针位置。 新位置从文件头开始以字节数度量，是以 `whence` 指定的位置加上 `offset`。

In general, it is allowed to seek past the end-of-file; if data is then written, reads in any unwritten region between the end-of-file and the sought position will yield bytes with value 0. However, certain streams may not support this behavior, especially when they have an underlying fixed size storage.

### 参数

`handle`

  文件系统指针，是典型地由 fopen() 创建的 resource(资源)。

`offset`

  偏移量。

  要移动到文件尾之前的位置，需要给 `offset` 传递一个负值，并设置 `whence` 为 `SEEK_END`。

`whence`

  `whence` values are:

  - `SEEK_SET` - 设定位置等于 `offset` 字节。
  - `SEEK_CUR` - 设定位置为当前位置加上 `offset`。
  - `SEEK_END` - 设定位置为文件尾加上 `offset`。

### 返回值

成功则返回 0；否则返回 -1。注意移动到 EOF 之后的位置不算错误。

### 范例

Example #1 fseek() 例子

    <?php

    $fp = fopen('somefile.txt', 'r');

    // read some data
    $data = fgets($fp, 4096);

    // move back to the beginning of the file
    // same as rewind($fp);
    fseek($fp, 0);

    ?>

### 注释

> Note:

> 如果使用附加模试（a 或 a+），任何写入文件数据都会被附加上去，而文件的位置将会被忽略，调用 fseek() 的结果尚未定义。

> Note:

> Not all streams support seeking. For those that do not support seeking, forward seeking from the current position is accomplished by reading and discarding data; other forms of seeking will fail.

### 参见

- ftell() - 返回文件指针读/写的位置
- rewind() - 倒回文件指针的位置