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

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 JavaScript (Node.js)



En el desarrollo web moderno, JavaScript ha trascendido hace tiempo los límites del navegador. Gracias a la plataforma Node.js, los desarrolladores han obtenido la capacidad de crear aplicaciones de servidor, trabajar con bases de datos y, por supuesto, interactuar con el sistema de archivos. Saber leer, escribir, eliminar y mover archivos es una de las habilidades clave de cualquier desarrollador backend. En este artículo, analizaremos en detalle cómo trabajar con el sistema de archivos en JavaScript en Node.js, utilizando el módulo incorporado fs y su versión moderna basada en promesas fs/promises.



El material será útil tanto para principiantes que recién comienzan a estudiar Node.js, como para desarrolladores experimentados que deseen sistematizar sus conocimientos. Todos los ejemplos de código se pueden ejecutar en su entorno de desarrollo.



Conexión del módulo fs y métodos principales



Para trabajar con el sistema de archivos en Node.js se utiliza el módulo incorporado fs (file system). No es necesario instalarlo por separado, está disponible inmediatamente después de instalar Node.js. Se conecta de la forma estándar:



const fs = require('fs');


Sin embargo, en JavaScript moderno (ES6+) y Node.js (a partir de la versión 14), se recomienda utilizar la sintaxis de ES modules y trabajar con la versión basada en promesas fs/promises. Esto permite evitar el "callback hell" y escribir código asíncrono más limpio usando async/await.



import * as fs from 'fs/promises';// oconst fs = require('fs/promises');


Los métodos principales del módulo fs se dividen en tres categorías:



  • Síncronos — bloquean el flujo de ejecución (por ejemplo, fs.readFileSync()). Se usan raramente, principalmente en scripts de inicialización.
  • Asíncronos con callbacks — el estilo tradicional de Node.js (por ejemplo, fs.readFile()).
  • Asíncronos basados en promesas — el estilo moderno (fs/promises). Se recomienda para la mayoría de las tareas.


Lectura de archivos en Node.js



Empecemos con la acción más común: leer el contenido de un archivo. Consideraremos dos enfoques: usando callbacks y usando promesas.



Lectura mediante callbacks (forma tradicional)



const fs = require('fs');

fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error('Error al leer el archivo:', err); return; } console.log('Contenido del archivo:', data);});


Tenga en cuenta: pasamos la codificación 'utf8' como segundo argumento. Si no se especifica, los datos se devolverán como un búfer binario (Buffer).



Lectura mediante promesas (forma recomendada)



import { readFile } from 'fs/promises';

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

readExample();


El código se ha vuelto más limpio y comprensible. Los errores se manejan mediante try/catch, lo cual es familiar para los desarrolladores que conocen otros lenguajes.



Escritura de datos en un archivo



Escribir en un archivo es la segunda operación más importante. En Node.js hay dos métodos principales: writeFile (sobrescribe el archivo) y appendFile (agrega datos al final del archivo).



Sobrescritura de archivo



import { writeFile } from 'fs/promises';

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

writeExample();


Si el archivo output.txt no existe, se creará automáticamente. Si existe, su contenido se sobrescribirá por completo.

Blogs

Book Recommendations