PHP | fseek 函數

怎樣移動文件的指針

最近更新時間 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);
rss_feed