# fread

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

fread — Lecture du fichier en mode binaire

### Description

fread(resource `$stream`, int `$length`): string|false

fread() lit jusqu'à `length` octets dans le fichier référencé par `stream`. La lecture s'arrête lorsqu'une des conditions suivantes apparaît :

- `length` octets ont été lus
- la fin du fichier est atteinte
- un paquet devient disponible ou le temps socket timeout est passé (pour les flux réseau)
- si le flux est lu depuis le buffer, et qu'il ne représente pas un fichier plein, alors au moins une lecture d'un nombre d'octets équivalent à la taille du bloc (habituellement 8192) est réalisée ; suivants les données du buffer précédent, la taille des données retournées peut être supérieure à la taille du bloc.

### Liste de paramètres

`stream`

  Un pointeur de système de fichiers de type resource qui est habituellement créé en utilisant la fonction fopen().

`length`

  Taille `length` d'octets à lire.

### Valeurs de retour

Retourne la chaîne lue, ou `false` si une erreur survient.

### Exemples

Exemple #1 Exemple avec fread()

`<?php
// Lit un fichier, et le place dans une chaîne
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>`

Exemple #2 Exemple avec fread() et un fichier binaire

Avertissement

Sur les systèmes qui différencient les fichiers textes et binaires (i.e. Windows) le fichier doit être ouvert avec la lettre 'b' ajoutée au paramètre de mode de la fonction fopen().

`<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>`

Exemple #3 Exemple avec fread() et un fichier distant

Avertissement

Lorsque vous lisez depuis n'importe quelle source qui n'est pas un fichier local, comme des flux retournés lors de la lecture de fichiers distants ou depuis popen() et fsockopen(), la lecture s'arrête après la réception d'un paquet. Il faut donc faire des boucles pour collecter les données par paquet, comme présenté ci-dessous.

`<?php
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>`
`<?php
$handle = fopen("http://www.example.com/", "rb");
if (FALSE === $handle) {
exit("Echec lors de l'ouverture du flux vers l'URL");
}
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
?>`

### Notes

> Note:

> Si vous voulez lire le contenu d'un fichier dans une chaîne de caractères, utilisez plutôt file_get_contents() qui est bien plus rapide que le code ci-dessus.

> Note:

> Noter que la fonction fread() lit la position courante du pointeur de fichier. Utilisez la fonction ftell() pour trouver la position courante du pointeur et la fonction rewind() pour réinitiliaser la position du pointeur.

### Voir aussi

- fwrite() - Écrit un fichier en mode binaire
- fopen() - Ouvre un fichier ou une URL
- fsockopen() - Ouvre un socket de connexion Internet ou Unix
- popen() - Crée un processus de pointeur de fichier
- fgets() - Récupère la ligne courante à partir de l'emplacement du pointeur sur fichier
- fgetss() - Renvoie la ligne courante du fichier et élimine les balises HTML
- fscanf() - Analyse un fichier en fonction d'un format
- file() - Lit le fichier et renvoie le résultat dans un tableau
- fpassthru() - Affiche le reste du fichier
- fseek() - Modifie la position du pointeur de fichier
- ftell() - Renvoie la position courante du pointeur de fichier
- rewind() - Replace le pointeur de fichier au début
- unpack() - Déconditionne des données depuis une chaîne binaire