Ce face fread
fread citește cel mult $length octeți de la poziția curentă. Spre deosebire de fgets, nu se oprește la sfârșitul liniei, deci este potrivit pentru fișiere binare (imagini, arhive) sau pentru citirea pe bucăți de mărime fixă.
Dacă fișierul are mai puțini octeți decât ai cerut, primești doar cât există.
Parametri
| Parametru | Descriere |
|---|---|
$stream |
Resursa returnată de fopen. |
$length |
Numărul maxim de octeți citiți. Trebuie să fie mai mare decât 0. |
Ce returnează
Textul citit (poate fi mai scurt decât $length) sau false la eroare.
Exemple
Exemplul 1: Citirea întregului fișier
<?php
file_put_contents("mesaj.txt", "Salut, Ana!");
$f = fopen("mesaj.txt", "r");
$text = fread($f, filesize("mesaj.txt"));
fclose($f);
echo $text;
Rezultat
Salut, Ana!
Exemplul 2: Citire pe bucăți
<?php
file_put_contents("cod.txt", "ABCDEFGHIJ");
$f = fopen("cod.txt", "r");
while (($bucata = fread($f, 4)) !== "") {
echo "[$bucata]";
}
fclose($f);
Rezultat
[ABCD][EFGH][IJ]
Exemplul 3: Recunoașterea unei imagini PNG
Orice fișier PNG începe cu aceiași 8 octeți. Îi citim și îi comparăm.
<?php
file_put_contents("poza.png", "\x89PNG\r\n\x1a\n" . "restul imaginii");
$f = fopen("poza.png", "rb");
$inceput = fread($f, 8);
fclose($f);
var_dump($inceput === "\x89PNG\r\n\x1a\n");
Rezultat
bool(true)
Greșeli frecvente
- Apelezi
fread($f, filesize($fisier))pe un fișier gol.filesizeeste 0 și primeștiValueError, pentru că lungimea trebuie să fie mai mare decât 0. - Folosești
freadpentru fișiere text citite linie cu linie.fgetseste mai simplu.
Comenzi înrudite
fopen / fclose: Deschide un fișier pentru citire sau scriere și returnează o resursă; fclose îl închide.fgets: Citește o linie dintr-un fișier deschis cu fopen.fwrite / fputs: Scrie un text într-un fișier deschis cu fopen. fputs este același lucru, cu alt nume.filesize: Returnează dimensiunea unui fișier, în octeți.