(PHP 4, PHP 5, PHP 7, PHP 8)
fread — Leitura de arquivo segura para binário
fread() lê até length
bytes do ponteiro de arquivo informado em stream
. A leitura é interrompida quando uma das seguintes condições são satisfeitas:
length
bytes foram lidos Retorna a string lida ou false
em caso de falha.
Exemplo #1 Um simples exemplo de fread()
<?php
// lê o conteúdo do arquivo para uma string
$filename = "/usr/local/qualquer.txt";
$handle = fopen ($filename, "r");
$conteudo = fread ($handle, filesize ($filename));
fclose ($handle);
?>
Exemplo #2 Exemplo de fread() binário
Em sistemas que diferenciam entre arquivos binários e texto (por exemplo Windows) o arquivo tem que ser aberto com 'b' incluído no parâmetro 'mode' da função fopen().
<?php
$filename = "c:\\files\\figura.gif";
$handle = fopen ($filename, "rb");
$conteudo = fread ($handle, filesize ($filename));
fclose ($handle);
?>
Exemplo #3 Exemplos de fread() remoto
Ao ler de qualquer coisa que não seja um arquivo local comum, tal como de fluxos retornados ao ler arquivos remotos, ou de popen() e fsockopen(), a leitura irá parar depois que um pacote estiver disponível. Isto significa que deve-se juntar os dados em blocos como demonstrado nos exemplos abaixo.
<?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("Falha ao abrir fluxo para a URL");
}
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
?>
Nota:
Se for desejado apenas obter o conteúdo de um arquivo para uma string, utilize file_get_contents() que tem um desempenho muito melhor que o código acima.
Nota:
Note que fread() lê da posição atual do ponteiro de arquivo. Use ftell() para encontrar a posição atual do ponteiro e rewind() para retroceder a posição do ponteiro.