Trabajo con el sistema de archivos en Node.js: guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con el sistema de archivos en Node.js: guía completa



En el desarrollo web moderno, la capacidad de trabajar eficientemente con el sistema de archivos es una de las habilidades clave para un desarrollador backend. Node.js proporciona un módulo fs (File System) potente y flexible que permite realizar todas las operaciones básicas con archivos y directorios: lectura, escritura, eliminación, renombrado y mucho más. En este artículo, analizaremos en detalle cómo trabajar con el sistema de archivos en Node.js, revisaremos los métodos síncronos y asíncronos, y también estudiaremos el trabajo con rutas.



Conexión del módulo fs y principios básicos



Para comenzar a trabajar con el sistema de archivos en Node.js, es necesario conectar el módulo incorporado fs. Esto se hace con una línea de código:



const fs = require('fs');


El módulo fs proporciona métodos tanto síncronos como asíncronos. Los métodos asíncronos, por lo general, aceptan una función callback como último argumento y son preferibles para el código de producción, ya que no bloquean el event loop. Los métodos síncronos terminan en Sync y pueden ser útiles durante la inicialización de la aplicación o en scripts.



Además, a partir de Node.js 10, está disponible el trabajo con fs/promises, una versión de los métodos que devuelven promesas:



const fs = require('fs/promises');


En este artículo, utilizaremos principalmente el enfoque asíncrono con promesas, ya que es el más moderno y conveniente.



Lectura de archivos en Node.js



La lectura de archivos es una de las operaciones más comunes. Consideremos tres formas principales.



Lectura completa de un archivo (asíncrona)



El método fs.readFile() lee el contenido completo del archivo en la memoria. Esto es conveniente para archivos pequeños.



const fs = require('fs/promises');

async function readFileExample() { try { const data = await fs.readFile('example.txt', 'utf8'); console.log('Contenido del archivo:', data); } catch (err) { console.error('Error al leer el archivo:', err); }}

readFileExample();


Lectura de un archivo línea por línea (lectura en flujo)



Para archivos grandes, es mejor usar flujos (streams) o leer el archivo línea por línea con readline:



const fs = require('fs');const readline = require('readline');

async function readFileLineByLine() { const fileStream = fs.createReadStream('large-file.txt'); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity });

for await (const line of rl) { console.log('Línea:', line); }}

readFileLineByLine();


Lectura síncrona



Si necesita leer un archivo de inmediato y está dispuesto a bloquear la ejecución:



const fs = require('fs');

try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data);} catch (err) { console.error(err);}


Escritura y actualización de archivos



Node.js proporciona varios métodos para escribir datos en archivos.



Escritura en un archivo (sobrescritura)



El método fs.writeFile() crea un nuevo archivo o sobrescribe uno existente:



const fs = require('fs/promises');

async function writeFileExample() { try { await fs.writeFile('output.txt', '¡Hola, mundo!', 'utf8'); console.log('Archivo escrito exitosamente'); } catch (err) { console.error('Error de escritura:', err); }}

writeFileExample();


Agregar datos al final de un archivo



Si necesita agregar datos sin eliminar los existentes, use fs.appendFile():



const fs = require('fs/promises');

async function appendToFile() { try { await fs.appendFile('log.txt', `Nueva entrada: ${new Date()}`); console.log('Datos agregados'); } catch (err) { console.error('Error:', err); }

Blogs

Book Recommendations