(PHP 4, PHP 5, PHP 7, PHP 8)
fwrite — Escribe en un fichero en modo binario
fwrite() escribe el contenido de la cadena
data
en el fichero apuntado por
stream
.
fwrite() devuelve el número de bytes escritos o false
en caso de error.
La función fwrite() emite una E_WARNING
si ocurre un error.
Versión | Descripción |
---|---|
8.0.0 |
length ahora es nullable.
|
Ejemplo #1 Ejemplo con fwrite()
<?php
$filename = 'test.txt';
$somecontent = "Añadiendo cadena al fichero\n";
// Asegurémonos de que el fichero es accesible en escritura
if (is_writable($filename)) {
// En nuestro ejemplo, abrimos el fichero $filename en modo de añadir
// El puntero del fichero se coloca al final del fichero
// es ahí donde $somecontent será colocado
if (!$fp = fopen($filename, 'a')) {
echo "No se puede abrir el fichero ($filename)";
exit;
}
// Escribamos algo en nuestro fichero.
if (fwrite($fp, $somecontent) === FALSE) {
echo "No se puede escribir en el fichero ($filename)";
exit;
}
echo "La escritura de ($somecontent) en el fichero ($filename) ha tenido éxito";
fclose($fp);
} else {
echo "El fichero $filename no es accesible en escritura.";
}
?>
Nota:
La escritura en un flujo puede terminar antes de que la cadena completa sea escrita. El valor devuelto por la función fwrite() puede ser verificado de la siguiente manera:
<?php
function fwrite_stream($fp, $string) {
for ($written = 0; $written < strlen($string); $written += $fwrite) {
$fwrite = fwrite($fp, substr($string, $written));
if ($fwrite === false) {
return $fwrite;
}
}
return $written;
}
?>
Nota:
En los sistemas que hacen la distinción entre ficheros binarios y ficheros de texto (por ejemplo, Windows), el fichero debe ser abierto con la opción 'b' incluida en el parámetro de modo de fopen().
Nota:
Si
stream
está abierto en modo añadir (append
), fwrite() será atómico (excepto si el tamaño dedata
excede el tamaño del bloque del sistema de ficheros, en algunas plataformas, y siempre que el fichero se encuentre en el sistema de ficheros local). Por lo tanto, no es necesario utilizar la función flock() en un recurso antes de llamar a la función fwrite(); todos los datos serán escritos sin interrupción.
Nota:
Si se escribe dos veces en el fichero, los datos serán añadidos al final del fichero; esto significa que el siguiente ejemplo no dará el resultado esperado:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// el contenido de 'data.txt' es ahora 123 y no 23 !
?>