Leitura de arquivo segura para binário

# fread

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

fread — Leitura de arquivo segura para binário

### Descrição

function fread(resource `$stream`, int `$length`): string|false

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
- EOF (final do arquivo) é alcançado
- um pacote tornou-se disponível ou o limite de tempo de socket foi atingido (para fluxos de rede)
- se o fluxo é lido com buffer e não representa um arquivo, é realizada no máximo uma leitura de até o número de bytes igual ao tamanho do bloco (normalmente 8192); dependendo dos dados previamente armazenados em buffer, o tamanho dos dados retornados pode ser maior que o tamanho do bloco.

### Parâmetros

`stream`
  Um resource de ponteiro do sistema de arquivos que normalmente é criado usando fopen().
`length`

  Limite de até `length` bytes lidos.

### Valor Retornado

Retorna a string lida ou `false` em caso de falha.

### Exemplos

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

Aviso

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

Aviso

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);
    ?>

### Notas

> 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.

### Veja Também

- fwrite() - Escrita binary-safe em arquivos
- fopen() - Abre um arquivo ou URL
- fsockopen() - Abre uma conexão socket de domínio Unix ou de Internet
- popen() - Abre um processo como ponteiro de arquivo
- fgets() - Lê uma linha de um ponteiro de arquivo
- fgetss() - Ler uma linha de um ponteiro de arquivo e retira as tags HTML
- fscanf() - Interpreta a leitura de um arquivo de acordo com um formato
- file() - Lê todo o arquivo para um array
- fpassthru() - Imprime todos os dados restantes de um ponteiro de arquivo
- fseek() - Aponta para uma posição no arquivo
- ftell() - Retorna a posição atual do ponteiro de leitura/gravação do arquivo
- rewind() - Retrocede a posição de um ponteiro de arquivos
- unpack() - Desempacota dados de uma string binária

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open