Trabajo con el sistema de archivos en JavaScript: guía práctica para 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

Introducción: ¿Por qué es importante saber trabajar con archivos en JavaScript?

\n\n

Cuando hablamos de JavaScript, la mayoría recuerda inmediatamente el navegador y las interfaces interactivas. Sin embargo, con la aparición de la plataforma Node.js, JavaScript ha ido mucho más allá de las páginas web. Hoy en día es un lenguaje completo para el desarrollo del lado del servidor, la automatización y las utilidades. Y una de las tareas clave a las que se enfrenta todo desarrollador es el trabajo con el sistema de archivos.

\n\n

Saber leer, escribir, mover y eliminar archivos es una base sin la cual no se puede imaginar ningún proyecto serio. Ya sea un logger, un archivo de configuración, la carga de imágenes o el análisis de datos, en todas partes se necesita acceso al sistema de archivos.

\n\n

En este artículo, analizaremos ejemplos prácticos de trabajo con el sistema de archivos en Node.js. Aprenderá a utilizar el módulo incorporado fs, qué métodos existen y cómo evitar errores típicos. Todo el código se puede ejecutar y probar inmediatamente.

\n\n

Métodos principales del módulo fs

\n\n

El módulo fs (File System) viene incluido en la instalación estándar de Node.js. No es necesario instalarlo por separado. Para empezar, basta con importarlo al principio del archivo:

\n\n
const fs = require('fs');\nconst fsPromises = require('fs').promises; // para trabajar con promesas
\n\n

Todos los métodos del módulo fs existen en tres variantes:

\n\n
    \n
  • Síncronos — bloquean la ejecución del código hasta que se completa la operación. Normalmente tienen el sufijo Sync.
  • \n
  • Asíncronos con callbacks — el estilo clásico de Node.js.
  • \n
  • Asíncronos con promesas — el enfoque moderno a través de fs.promises.
  • \n
\n\n

En proyectos modernos, se recomienda utilizar promesas y async/await. Esto hace que el código sea más limpio y comprensible.

\n\n

Lectura de archivos

\n\n

El escenario más común es leer el contenido de un archivo. Veamos un ejemplo con el archivo de texto data.txt:

\n\n
const fs = require('fs').promises;\n\nasync function readFileExample() {\n    try {\n        const data = await fs.readFile('data.txt', 'utf8');\n        console.log('Contenido del archivo:');\n        console.log(data);\n    } catch (err) {\n        console.error('Error al leer el archivo:', err.message);\n    }\n}\n\nreadFileExample();
\n\n

El segundo parámetro 'utf8' especifica la codificación. Si se omite, obtendrá un buffer sin procesar (Buffer). Para archivos de texto, especifique siempre la codificación.

\n\n

Escritura en un archivo

\n\n

La escritura de datos en un archivo se puede realizar de dos maneras: sobrescritura completa o añadir al final.

\n\n

Sobrescritura de archivo:

\n
const fs = require('fs').promises;\n\nasync function writeFileExample() {\n    try {\n        await fs.writeFile('output.txt', '¡Hola, sistema de archivos!');\n        console.log('Archivo escrito exitosamente');\n    } catch (err) {\n        console.error('Error de escritura:', err.message);\n    }\n}\n\nwriteFileExample();
\n\n

Añadir al final del archivo:

\n
const fs = require('fs').promises;\n\nasync function appendFileExample() {\n    try {\n        await fs.appendFile('log.txt', `Nueva entrada: ${new Date().toISOString()}\\n`);\n        console.log('Datos añadidos');\n    } catch (err) {\n        console.error('Error al añadir:', err.message);\n    }\n}\n\nappendFileExample();
\n\n

El método appendFile es ideal para llevar registros (logs) o acumular datos.

\n\n

Gestión de directorios y archivos

\n\n

El trabajo con el sistema de archivos no se limita a la lectura y escritura. A menudo es necesario crear carpetas, verificar la existencia de archivos o eliminarlos.

\n\n

Creación y eliminación de directorios

\n\n
const fs = require('fs').promises;\n\nasync function manageDirectories() {\n    try {\n        // Creación de directorio (si no existe)\n        await fs.mk                

Blogs

Book Recommendations