fseek

(PHP 4, PHP 5, PHP 7, PHP 8)

fseekПеремещает позицию файлового указателя

Описание

fseek(resource $stream, int $offset, int $whence = SEEK_SET): int

Функция устанавливает положение указателя в файле, на который ссылается поток stream. Новое положение указателя измеряется в байтах от начала файла и рассчитывается путём прибавления значения параметра offset к позиции параметра whence.

В общем случае разрешается перемещать указатель за пределы конца файла; при записи данных за пределами конца файла чтение из незаписанной области между концом файла и заданной позицией указателя выдаст байты со значением 0. Однако отдельные потоки не поддерживают такое поведение, в первую очередь потоки на основе хранилищ фиксированного размера.

Список параметров

stream

Ресурс (resource) указателя файловой системы, который обычно создают функцией fopen().

offset

Смещение.

В параметр offset передают отрицательное значение, а для параметра whence устанавливают значение SEEK_END, чтобы перейти к позиции перед концом файла.

whence

Параметр whence принимает следующие значения:

  • SEEK_SET — Перемещает указатель в положение, равное количеству байтов смещения offset от начала файла.
  • SEEK_CUR — Перемещает указатель вперёд — в положение, равное количеству байтов смещения offset от текущей позиции.
  • SEEK_END — Перемещает указатель за пределы конца файла — в положение, равное количеству байтов смещения offset от конца файла.

Возвращаемые значения

Функция возвращает 0, если выполнилась успешно; иначе возвращает значение -1.

Внимание

Функция имитирует поведение функции языка C с тем же названием и возвращает нестандартные значения, непохожие на те, которые ожидались бы в PHP.

Примеры

Пример #1 Пример использования функции fseek()

<?php

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

// Читаем фрагмент данных
$data = fgets($fp, 4096);

// Перемещаемся назад к началу файла —
// то же, что и вызов rewind($fp);
fseek($fp, 0);

?>

Примечания

Замечание:

Функция будет только дописывать данные в конец файла, независимо от позиции указателя в файле, а результат вызова функции fseek() будет неопределённым, если файл открыли в режиме a — только для чтения или в режиме a+ — для чтения или добавления данных в конец файла.

Замечание:

Не каждый поток поддерживает перемещение указателя. В потоках, которые не поддерживают перемещение файлового указателя, функция перемещает указатель вперёд от текущей позиции путём считывания и отбрасывания данных; другие формы перемещения указателя закончатся ошибкой.

Смотрите также

  • ftell() - Возвращает текущую позицию указателя чтения/записи файла
  • rewind() - Отматывает позицию файлового указателя