fwrite
(PHP 4, PHP 5)
fwrite — Escritura de un archivo en modo binario seguro
Descripción
$handle
, string $string
[, int $length
] )
fwrite() escribe el contenido de
string
al flujo de archivo apuntado por
handle
.
Parámetros
-
handle
-
Resource que apunta a un fichero del sitema que normalmente es creado usando fopen().
-
string
-
La cadena que va a ser escrita.
-
length
-
Si se da el argumento
length
, la escritura se detendrá después de quelength
bytes hayan sido escritos o se alcance el final destring
, lo que suceda primero.Observe que si el argumento
length
se da, la opción de configuración magic_quotes_runtime será ignorada y no se eliminarán las barras destring
.
Valores devueltos
fwrite() devuelve el número de bytes
escritos, o FALSE
si se produjo un error.
Notas
Nota:
Escribir en un flujo de red puede terminar antes de que se haya escrito la cadena completa. El valor devuelto por fwrite() se puede verificar:
<?php
function flujo_fwrite($fp, $cadena) {
for ($escrito = 0; $escrito < strlen($cadena); $escrito += $fwrite) {
$fwrite = fwrite($fp, substr($cadena, $escrito));
if ($fwrite === false) {
return $escrito;
}
}
return $escrito;
}
?>
Nota:
En sistemas en los que se diferencia entre archivos binarios y de texto (esto es, Windows) el archivo debe ser abierto con 'b' incluida en el parámetro modo de fopen().
Nota:
Si
handle
fue abierto por fopen() en modo de adición, las escrituras de fwrite() son atómicas (a menos que el tamaño destring
exceda el tamaño de bloque del sistema de archivos, en algunas plataformas, siempre que el archivo esté en un sistema de archivos local). Es decir, no hay necesidad de bloquear un recurso con flock() antes de llamar a fwrite(); toda la información será escrita sin interrupciones.
Nota:
Si se escribe dos veces sobre el puntero al archivo la información será añadida al final del contenido del archivo:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// ¡el contenido de 'data.txt' ahora es 123 y no 23!
?>
Ejemplos
Ejemplo #1 Un ejemplo sencillo de fwrite()
<?php
$nombre_archivo = 'prueba.txt';
$contenido = "Añade esto al archivo\n";
// Primero vamos a asegurarnos de que el archivo existe y es escribible.
if (is_writable($nombre_archivo)) {
// En nuestro ejemplo estamos abriendo $nombre_archivo en modo de adición.
// El puntero al archivo está al final del archivo
// donde irá $contenido cuando usemos fwrite() sobre él.
if (!$gestor = fopen($nombre_archivo, 'a')) {
echo "No se puede abrir el archivo ($nombre_archivo)";
exit;
}
// Escribir $contenido a nuestro archivo abierto.
if (fwrite($gestor, $contenido) === FALSE) {
echo "No se puede escribir en el archivo ($nombre_archivo)";
exit;
}
echo "Éxito, se escribió ($contenido) en el archivo ($nombre_archivo)";
fclose($gestor);
} else {
echo "El archivo $nombre_archivo no es escribible";
}
?>
Ver también
- fread() - Lectura de un fichero en modo binario seguro
- fopen() - Abre un fichero o una URL
- fsockopen() - Abre una conexión vía sockets a Internet o a un dominio Unix
- popen() - Abre un proceso de un puntero a un fichero
- file_get_contents() - Transmite un fichero entero a una cadena