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);