fread

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

freadLectura del archivo en modo binario

Descripción

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