(PHP 4, PHP 5, PHP 7, PHP 8)
fread — Lectura del archivo en modo binario
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
Devuelve la cadena leída, o false
en caso de error.
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
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
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);
?>
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.