# fread

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

fread — Lectura de un fichero en modo binario seguro

### Descripción

fread(resource `$handle`, int `$length`): string

fread() lee hasta `length` bytes desde el puntero al fichero referenciado por `handle`. La lectura termina tan pronto como se encuentre una de las siguientes condiciones:

- `length` bytes han sido leídos
- EOF (fin de fichero) es alcanzado
- un paquete se encuentra disponible o el tiempo límite del socket se agota (para flujos de red)
- si el flujo es leído en buffer y no representa un fichero plano, se realiza al menos una lectura de hasta un número de bytes igual al tamaño del trozo (normalmente 8192); dependiendo del la información previamente almacenada en buffer, el tamaño de la información devuelta puede ser mayor que el tamaño del trozo.

### Parámetros

`handle`

  Resource que apunta a un fichero del sitema que normalmente es creado usando fopen().

`length`

  Lectura de hasta `length` número de bytes.

### Valores devueltos

Devuelve la cadena leída o `false` en caso de error.

### Ejemplos

Ejemplo #1 Un ejemplo sencillo de fread()

`<?php
// poner el contenido de un fichero en una cadena
$nombre_fichero = "/usr/local/algo.txt";
$gestor = fopen($nombre_fichero, "r");
$contenido = fread($gestor, filesize($nombre_fichero));
fclose($gestor);
?>`

Ejemplo #2 Ejemplo de lectura binaria de fread()

Advertencia

En sistemas en los que se diferencia entre archivos binarios y de texto (esto es, Windows) el fichero debe ser abierto con 'b' incluida en el parámetro modo de fopen().

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

Ejemplo #3 Ejemplos de lectura remota con fread()

Advertencia

Cuando se lee desde algo que no es un fichero local normal, como los flujos devueltos cuando se leen ficheros remotos o desde popen() y fsockopen(), la lectura se detendrá después de que esté disponible un paquete. Esto significa que debería reuinir la información en trozos como se muestra en los ejemplos de abajo.

`<?php
// Para PHP 5 y superior
$gestor = fopen("http://www.example.com/", "rb");
$contenido = stream_get_contents($gestor);
fclose($gestor);
?>`
`<?php
$gestor = fopen("http://www.example.com/", "rb");
if (FALSE === $gestor) {
exit("Falló la apertura del flujo a la URL");
}
$contenido = '';
while (!feof($gestor)) {
$contenido .= fread($gestor, 8192);
}
fclose($gestor);
?>`

### Notas

> Nota:

> Si sólo quiere poner el contenido de un fichero en una cadena, use file_get_contents() ya que tiene mucho mejor rendimiento que el código de arriba.

> Nota:

> Observe que fread() lee desde la posción actual del puntero al fichero. Use ftell() para encontrar la posición actual del puntero y rewind() para rebobinar la posición del puntero.

### Ver también

- fwrite() - Escritura de un archivo en modo binario seguro
- fopen() - Abre un fichero o un URL
- fsockopen() - Abre una conexión vía sockets a Internet o a un dominio Unix
- popen() - Abre un proceso de un puntero a un fichero
- fgets() - Obtiene una línea desde el puntero a un fichero
- fgetss() - Obtiene un línea desde un puntero a un archivo y elimina las etiquetas HTML
- fscanf() - Analiza la entrada desde un archivo de acuerdo a un formato
- file() - Transfiere un fichero completo a un array
- fpassthru() - Escribe toda la información restante de un puntero a un archivo
- ftell() - Devuelve la posición de lectura/escritura actual del puntero a un fichero
- rewind() - Rebobina la posición de un puntero a un archivo
- unpack() - Desempaqueta datos de una cadena binaria