Taller > PHP > Manejo de archivos
Escribir Archivos en PHP Usando fwrite() y fputs()
En PHP, escribir datos en un archivo es una tarea esencial para muchas aplicaciones. PHP proporciona dos funciones principales para realizar estas operaciones: fputs() y fwrite(). Ambas permiten escribir datos en archivos abiertos en diferentes modos, ya sea para sobrescribir contenido o agregar más datos.
Modos de apertura de archivos para escribir
Antes de poder escribir datos en un archivo, primero debemos abrirlo en un modo que permita la escritura. Los modos más comunes son:
| Modo | Descripción |
|---|---|
| w | Abre el archivo solo para escritura. Si el archivo ya existe, se sobrescribirá. Si no existe, se creará. |
| a | Abre el archivo para añadir datos. Si no existe, se crea. |
| r+ | Abre el archivo para lectura y escritura. El puntero se coloca al inicio. |
| w+ | Abre el archivo para lectura y escritura. Si el archivo ya existe, se sobrescribe. |
| wb+ | Abre el archivo en modo binario para lectura y escritura. Si no existe, se crea. |
La función fputs()
La función fputs() escribe una cadena de texto en un archivo que ha sido abierto en un modo que permite la escritura. También puede escribir un número limitado de bytes si se especifica.
Sintaxis:
fputs(resource $stream, string $string, int $length): int|false
$stream: Un puntero al archivo abierto.
$string: La cadena de texto que se va a escribir.
$length (opcional): Número máximo de bytes a escribir.
Ejemplo 1: Escribir texto en un archivo
El siguiente código muestra cómo escribir texto en un archivo utilizando fputs().
<?php
$archivo = fopen("saludo.txt", "w");
if ($archivo) {
$bytes = fputs($archivo, "Hola Mundo\n");
echo "Bytes escritos: $bytes";
fclose($archivo);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
fputs($archivo, "Hola Mundo\n"): Escribe “Hola Mundo” seguido de un salto de línea en el archivo.
fclose($archivo): Cierra el archivo después de escribir los datos.
Ejemplo 2: Agregar texto a un archivo existente
Si necesitas agregar texto a un archivo existente sin sobrescribir el contenido, puedes abrirlo en modo de adición (a).
<?php
$archivo = fopen("saludo.txt", "a");
if ($archivo) {
$bytes = fputs($archivo, "Hola PHP");
echo "Bytes escritos: $bytes";
fclose($archivo);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
fputs($archivo, "Hola PHP"): Añade la cadena “Hola PHP” al final del archivo sin borrar el contenido existente.
Ejemplo 3: Copiar el contenido de un archivo a otro
El siguiente ejemplo muestra cómo copiar el contenido de un archivo en otro usando fputs() para escribir línea por línea.
<?php
$archivo_origen = fopen("origen.txt", "r");
$archivo_destino = fopen("destino.txt", "w");
if ($archivo_origen && $archivo_destino) {
while (!feof($archivo_origen)) {
$linea = fgets($archivo_origen);
fputs($archivo_destino, $linea);
}
fclose($archivo_origen);
fclose($archivo_destino);
echo "Archivo copiado exitosamente.";
} else {
echo "No se pudo abrir uno de los archivos.";
}
?>
Explicación:
fgets($archivo_origen): Lee cada línea del archivo de origen.
fputs($archivo_destino, $linea): Escribe cada línea leída en el archivo de destino.
La función fwrite()
La función fwrite() es similar a fputs(), pero se utiliza más comúnmente para operaciones de escritura que requieren manejo de datos binarios o especificar un número preciso de bytes a escribir.
Sintaxis:
fwrite(resource $stream, string $data, ?int $length = null): int|false
$stream: Un puntero al archivo.
$data: Los datos a escribir.
$length (opcional): El número de bytes a escribir.
Ejemplo 1: Escribir en un archivo usando fwrite()
<?php
$archivo = fopen("datos.txt", "w");
if ($archivo) {
$bytes = fwrite($archivo, "Aprendiendo PHP es divertido!");
echo "Bytes escritos: $bytes";
fclose($archivo);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
fwrite($archivo, "Aprendiendo PHP es divertido!"): Escribe la cadena especificada en el archivo.
Ejemplo 2: Escribir un archivo binario
La función fwrite() también se puede utilizar para copiar archivos binarios, como imágenes.
<?php
$archivo_origen = fopen("imagen.png", "rb");
$archivo_destino = fopen("copia.png", "wb");
if ($archivo_origen && $archivo_destino) {
$tamano = filesize("imagen.png");
$contenido = fread($archivo_origen, $tamano);
fwrite($archivo_destino, $contenido);
fclose($archivo_origen);
fclose($archivo_destino);
echo "Archivo binario copiado exitosamente.";
} else {
echo "No se pudo abrir uno de los archivos.";
} ?>
Explicación:
fopen("imagen.png", "rb"): Abre el archivo binario en modo de lectura.
fwrite($archivo_destino, $contenido): Escribe el contenido binario en el archivo de destino.
Cierre de archivos
Es importante siempre cerrar los archivos después de realizar operaciones de lectura o escritura. Utiliza fclose() para liberar los recursos del sistema y evitar problemas de rendimiento.
Conclusión
PHP ofrece funciones eficientes para escribir datos en archivos, como fputs() y fwrite(). Estas funciones te permiten escribir tanto texto como datos binarios, dependiendo de tus necesidades.
Además, es fundamental abrir los archivos en los modos correctos y cerrarlos adecuadamente para asegurar que los datos se guarden correctamente y se liberen los recursos del sistema.