fseek

funkcja

Przesuwa wskaźnik pozycji w otwartym pliku. Zwraca 0 przy sukcesie lub -1 przy błędzie.

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

fseek umożliwia swobodne poruszanie się po pliku bez sekwencyjnego czytania. Parametr $whence określa punkt odniesienia przesunięcia:

| Stała | Wartość | Znaczenie | |-------|---------|-----------| | SEEK_SET | 0 | od początku pliku (domyślnie) | | SEEK_CUR | 1 | od bieżącej pozycji | | SEEK_END | 2 | od końca pliku |

Funkcja zwraca 0 przy sukcesie i -1 przy błędzie — nie false. Bieżącą pozycję odczytujesz przez ftell.

<?php
declare(strict_types=1);

$uchwyt = fopen(__DIR__ . '/dane.bin', 'rb');

if ($uchwyt === false) {
    exit('Nie można otworzyć pliku.');
}

// Przejdź do 10. bajtu od początku
fseek($uchwyt, 10, SEEK_SET);
echo 'Pozycja: ' . ftell($uchwyt) . PHP_EOL; // 10

// Cofnij się o 3 bajty od bieżącej pozycji
fseek($uchwyt, -3, SEEK_CUR);
echo 'Pozycja: ' . ftell($uchwyt) . PHP_EOL; // 7

// Przejdź do ostatnich 5 bajtów
fseek($uchwyt, -5, SEEK_END);

$fragment = fread($uchwyt, 5);
fclose($uchwyt);