fwrite

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

fwriteEscrita binary-safe em arquivos

Descrição

fwrite(resource $stream, string $data, ?int $length = null): int|false

fwrite() grava o conteúdo de data no ponteiro de arquivo informado em stream.

Parâmetros

stream

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

data

A string a ser escrita.

length

Se length for um int, a escrita irá parar depois quelength forem escritos, ou o o fim de data for alcançado, o que ocorrer primeiro.

Valor Retornado

fwrite() retorna o número de bytes escritos, ou false em caso de falha.

Erros/Exceções

fwrite() emite um E_WARNING em caso falhas.

Registro de Alterações

Versão Descrição
8.0.0 length pode ser null.

Exemplos

Example #1 Exemplo de fwrite()

<?php
$filename = 'test.txt';
$somecontent = "Acrescente isso no arquivo\n";

// Vamos garantir que o arquivo existe e pode ser escrito
if (is_writable($filename)) {

    // Nesse exemplo estamos abrindo o $filename em modo append.
    // O ponteiro do arquivo estará no final do arquivo
    // e portanto é aqui que $somecontent será posicionado pelo fwrite().
    if (!$fp = fopen($filename, 'a')) {
         echo "Erro ao abrir o ($filename)";
         exit;
    }

    // Escrever alguma coisa no arquivo.
    if (fwrite($fp, $somecontent) === FALSE) {
        echo "Erro ao escrever no arquivo ($filename)";
        exit;
    }

    echo "Sucesso, escrito ($somecontent) no arquivo ($filename)";

    fclose($fp);

} else {
    echo "O arquivo não permite escrita";
}
?>

Notas

Note:

Escrever em um fluxo de rede pode acabar antes de toda a string ser transmitida. O retorno de fwrite() precisa ser inspecionado:

<?php
function fwrite_stream($fp, $string) {
    for ($written = 0; $written < strlen($string); $written += $fwrite) {
        $fwrite = fwrite($fp, substr($string, $written));
        if ($fwrite === false) {
            return $written;
        }
    }
    return $written;
}
?>

Note:

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' na fopen().

Note:

Se o stream foi aberto com fopen() em modo de adição, escritas com fwrite() são atômicas (a não ser que o tamanho da data exceda o tamanho de bloco do sistema de arquivos, em algumas plataformas, e contanto que o arquivo esteja em um sistema de arquivos local). Sendo assim, não há necessidade de bloquear um recurso com flock() antes de chamar fwrite(); todos os dados serão escritos sem interrupção.

Note:

Se escrever duas vezes no ponteiro do arquivo, então a informação será adicionado ao final do contéudo do arquivo:

<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

// O conteúdo de 'data.txt' é 123, e não 23
?>

Veja Também

  • fread() - Leitura de arquivo segura para binário
  • 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
  • file_get_contents() - Lê todo o conteúdo de um arquivo para uma string
  • pack() - Empacota dados em uma string binária