Lectura del archivo en modo binario

# fread

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

fread — Lectura del archivo en modo binario

### Descripción

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

fread() lee hasta `length` bytes en el archivo referenciado por `stream`. La lectura se detiene cuando se presenta alguna de las siguientes condiciones:

- `length` bytes han sido leídos
- se alcanza el final del archivo
- un paquete se vuelve disponible o el tiempo socket timeout ha pasado (para flujos de red)
- si el flujo se lee desde el buffer, y no representa un archivo completo, entonces al menos una lectura de un número de bytes equivalente al tamaño del bloque (generalmente 8192) se realiza; siguiendo los datos del buffer anterior, el tamaño de los datos devueltos puede ser superior al tamaño del bloque.

### Parámetros

`stream`
  Un puntero del sistema de archivos de tipo resource que es habitualmente creado utilizando la función fopen().
`length`

  Tamaño `length` de bytes a leer.

### Valores devueltos

Devuelve la cadena leída, o `false` si ocurre un error.

### Ejemplos

Ejemplo #1 Ejemplo con fread()

    <?php
    // Lee un archivo y lo coloca en una cadena
    $filename = "/usr/local/something.txt";
    $handle = fopen($filename, "r");
    $contents = fread($handle, filesize($filename));
    fclose($handle);
    ?>

Ejemplo #2 Ejemplo con fread() y un archivo binario

Advertencia

En los sistemas que diferencian los archivos de texto y binarios (por ejemplo, Windows) el archivo debe ser abierto con la letra 'b' añadida al parámetro de modo de la función fopen().

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

Ejemplo #3 Ejemplo con fread() y un archivo remoto

Advertencia

Cuando se lee desde cualquier fuente que no sea un archivo local, como flujos devueltos al leer archivos remotos o desde popen() y fsockopen(), la lectura se detiene después de recibir un paquete. Por lo tanto, se deben hacer bucles para recolectar los datos por paquete, como se presenta a continuación.

    <?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("Fallo al abrir el flujo hacia la URL");
    }

    $contents = '';

    while (!feof($handle)) {
        $contents .= fread($handle, 8192);
    }
    fclose($handle);
    ?>

### Notas

> Nota:

> Si se desea leer el contenido de un archivo en una cadena de caracteres, es preferible utilizar file_get_contents() que es mucho más rápido que el código anterior.

> Nota:

> Se observa que la función fread() lee la posición actual del puntero de archivo. Utilice la función ftell() para encontrar la posición actual del puntero y la función rewind() para reinicializar la posición del puntero.

### Ver también

- fwrite() - Escribe en un fichero en modo binario
- fopen() - Abre un fichero o un URL
- fsockopen() - Abre un socket de conexión Internet o Unix
- popen() - Crea un puntero de archivo de proceso
- fgets() - Recupera la línea actual a partir de la posición del puntero de archivo
- fgetss() - Obtiene un línea desde un puntero a un archivo y elimina las etiquetas HTML
- fscanf() - Analiza un archivo según un formato
- file() - Lee el fichero y devuelve el resultado en un array
- fpassthru() - Muestra el resto del fichero
- fseek() - Modifica la posición del puntero de archivo
- ftell() - Devuelve la posición actual del puntero de archivo
- rewind() - Reemplaza el puntero de fichero al inicio
- unpack() - Desempaqueta datos desde una cadena binaria

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open