fread

(PHP 3, PHP 4 , PHP 5)

fread -- Leitura binary-safe de arquivo

Descrição

string fread ( resource handle, int length )

fread() lê até length bytes do ponteiro de arquivo informado em handle. A leitura é interrompida quando length bytes foram lidos ou o fim do arquivo (eof) foi alcançado, ou (para streams de rede) quando um pacote se torna disponível, o que ocorrer primeiro.

<?php
// ler o conteúdo do arquivo para uma string
$filename = "/usr/local/qualquer.txt";
$handle = fopen ($filename, "r");
$conteudo = fread ($handle, filesize ($filename));
fclose ($handle);
?>

Atenção

Em sistemas que diferenciam entre arquivos binários e texto (por exemplo Windows) o arquivo tem que ser aberto com 'b' incluído como parametro na função fopen().

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

Atenção

Quando lendo de streams de rede ou canais (pipes), como aqueles retornados pela leitura de arquivos remotos ou de popen() e proc_open(), a leitura irá parar depois que um pacote se torna disponível. Isto significa que você deve juntar os dados em blocos como demonstrado no exemplo seguinte.

<?php
$handle
= fopen ("http://www.example.com/", "rb");
$conteudo = "";
do {
    
$data = fread($handle, 8192);
    if (
strlen($data) == 0) {
        break;
    }
    
$conteudo .= $data;
} while(
true);
fclose ($handle);
?>

Nota: O exemplo acima tem uma performance melhor que o jeito comum usando while(!feof()), porque ele economiza o overhead de uma chamada de função por iteração.

Nota: Se você quer apenas pegar o conteúdo de um arquivo para uma string, utilize file_get_contents() que tem uma performance ainda melhor que o código acima.

Veja também fwrite(), fopen(), fsockopen(), popen(), fgets(), fgetss(), fscanf(), file() e fpassthru().