fwrite

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

fwriteEscribe en un fichero en modo binario

Descripción

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

fwrite() escribe el contenido de la cadena data en el fichero apuntado por stream.

Parámetros

stream

Un puntero del sistema de archivos de tipo resource que es habitualmente creado utilizando la función fopen().

data

La cadena a escribir.

length

Si se proporciona la longitud length, la escritura se detendrá después de length bytes, o al final de la cadena (lo que ocurra primero).

Valores devueltos

fwrite() devuelve el número de bytes escritos o false si ocurre un error.

Errores/Excepciones

La función fwrite() emite una E_WARNING si ocurre un error.

Historial de cambios

Versión Descripción
8.0.0 length ahora es nullable.

Ejemplos

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.";
}
?>

Notas

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 de data 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 !
?>

Ver también

  • fread() - Lectura del archivo en modo binario
  • fopen() - Abre un fichero o un URL
  • fsockopen() - Abre un socket de conexión Internet o Unix
  • popen() - Crea un puntero de archivo de proceso
  • file_get_contents() - Lee todo un fichero en una cadena
  • pack() - Compacta datos en una cadena binaria