PHP | fseek 函数

Lasted 2021-01-18 17:48:52

fseek 函数移动文件指针。

fseek() 函数有两个必填参数和一个选填参数。其中第二个参数表示需要移动的字节数。移动的方式由第三个参数决定,默认为文件起始位置。

函数定义

fseek ( resource $handle , int $offset , int $whence = SEEK_SET ) : int
// 源文件位于:ext/standard/file.c
# 函数定义

PHPAPI PHP_FUNCTION(fseek)
{
  zval *res;
  zend_long offset, whence = SEEK_SET;
  php_stream *stream;

  ZEND_PARSE_PARAMETERS_START(2, 3)
    Z_PARAM_RESOURCE(res)
    Z_PARAM_LONG(offset)
    Z_PARAM_OPTIONAL
    Z_PARAM_LONG(whence)
  ZEND_PARSE_PARAMETERS_END();

  PHP_STREAM_TO_ZVAL(stream, res);

  RETURN_LONG(php_stream_seek(stream, offset, (int) whence));
}

参数

  • checkhandle - 文件指针。
  • checkoffset - 移动的字节数。要移动到文件尾之前的位置,需要给 offset 传递一个负值,并设置 whence 为 SEEK_END。
  • checkwhence - 移动的方式。
    • SEEK_SET 从文件的起始位置,设定位置等于 offset 字节。
    • SEEK_CUR 设定位置为当前位置加上 offset。
    • SEEK_END 设定位置为文件尾加上 offset。

返回值

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

示例1: - 使用 fseek() 函数移动文件指针位置。

<?php
/**
 * PHP fseek() 函数移动文件指针位置。
 *
 * @since Version 1.0.0
 * @filesource
 */

// 打开文件
$fileName = 'foo.txt';
$handle = fopen($fileName, 'r');

// 读取文件
$data = fgets($handle, 1024);

// 移动指针到文件开头
// 功能跟 rewind($handle); 一样
fseek($handle, 0);

// 关闭文件
fclose($handle);