Node.js proporciona un módulo llamado fs
(file system) que nos permite interactuar con el sistema de archivos del servidor.
Este módulo nos brinda una todas las funciones que necesitamos para realizar operaciones como leer, escribir, modificar y eliminar archivos y directorios.
Al leer y escribir archivos, es importante especificar la codificación correcta. Por ejemplo, utf8
. Si trabajamos con archivos binarios, como imágenes o archivos comprimidos, debemos omitir la codificación para obtener los datos sin modificar.
Para archivos grandes, es recomendable utilizar el módulo streams
de Node.js en lugar de cargar todo el contenido en memoria. Lo veremos en el próximo artículo Cómo trabajar con streams
Funciones del módulo FS
Vamos a ver algunas de las funciones más importantes del módulo fs
, junto con ejemplos prácticos de cómo utilizarlas.
Verificar si un archivo existe
La primera tarea que a menudo necesitamos realizar es verificar la existencia de un archivo. Para ello, utilizamos la función access
, la cual nos permite comprobar si un archivo existe y tenemos permisos para acceder a él.
import { access } from 'node:fs';
access('archivo.txt', (err) => {
if (err) {
console.error('El archivo no existe');
return;
}
console.log('El archivo existe');
});
Copiar un archivo
Para realizar una copia de un archivo existente utilizamos la función copyFile
, que toma el nombre del archivo de origen y el nombre del archivo de destino como parámetros.
import { copyFile } from 'node:fs';
copyFile('origen.txt', 'destino.txt', (err) => {
if (err) throw err;
console.log('Archivo copiado exitosamente');
});
Mover un archivo
Para cambiar el nombre o la ubicación de un archivo, utilizamos la función rename
. Esto nos permite mover un archivo de una ubicación a otra o simplemente cambiar su nombre.
import { rename } from 'node:fs';
rename('antiguo.txt', 'nuevo.txt', (err) => {
if (err) throw err;
console.log('Archivo movido exitosamente');
});
Borrar un archivo
Para eliminar un archivo de manera programática utilizamos la función unlink
, la cual nos permite borrar un archivo del sistema de archivos.
import { unlink } from 'node:fs';
unlink('archivo.txt', (err) => {
if (err) throw err;
console.log('Archivo borrado exitosamente');
});
Lectura de archivo de texto
Supongamos que tenemos un archivo llamado datos.txt
con el siguiente contenido:
Este es un archivo de ejemplo.
Contiene algunas líneas de texto.
El siguiente código en Node.js nos permitirá leer este archivo:
import { readFile } from 'node:fs';
fs.readFile('datos.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error al leer el archivo:', err);
return;
}
console.log('Contenido del archivo:');
console.log(data);
});
En este ejemplo, fs.readFile()
toma tres argumentos: el nombre del archivo (datos.txt
), la codificación (utf8
para texto) y una función de callback que se ejecuta una vez que se completa la lectura. Si la lectura es exitosa, el contenido del archivo se imprime en la consola.
Lectura de archivo de binario
Supongamos que tenemos un archivo llamado datos.txt
pero como binario, sus bytes.
import { readFile } from 'node:fs';
fs.readFile('datos.txt',(err, data) => {
if (err) {
console.error('Error al leer el archivo:', err);
return;
}
console.log('Contenido del archivo:');
console.log(data);
});
Añadir una línea a un archivo
Para añadir contenido a un archivo existente, como por ejemplo agregar una nueva línea, utilizamos la función appendFile
.
import { appendFile } from 'node:fs';
const nuevaLinea = 'Nueva línea a añadir';
appendFile('archivo.txt', `${nuevaLinea}\n`, (err) => {
if (err) throw err;
console.log('Línea añadida al archivo');
});
Crear un nuevo archivo y escribir en él
Para crear un nuevo archivo y escribir contenido en él, utilizamos la función writeFile
.
import { writeFile } from 'node:fs';
const contenido = 'Contenido del nuevo archivo';
writeFile('nuevo.txt', contenido, (err) => {
if (err) throw err;
console.log('Nuevo archivo creado y contenido escrito');
});
Descarga el código
Todo el código de esta entrada está disponible para su descarga en Github