fwrite
(PHP 4, PHP 5, PHP 7, PHP 8)
fwrite — Escrita binary-safe em arquivos
Descrição
fwrite() grava o conteúdo de
data
no ponteiro de arquivo informado em
stream
.
Parâmetros
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 dadata
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