fread

(PHP 4, PHP 5, PHP 7)

freadLectura 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($gestorfilesize($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($gestorfilesize($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");
(FALSE === $gestor) {
    exit(
"Falló la apertura del flujo al URL");
}

$contenido '';
while (!
feof($gestor)) {
    
$contenido .= fread($gestor8192);
}
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