En este módulo, aprenderemos cómo manejar archivos en Node.js. La capacidad de leer y escribir archivos es fundamental para muchas aplicaciones, desde la manipulación de datos hasta la generación de informes. Node.js proporciona un módulo llamado fs
(file system) que facilita estas operaciones.
Contenido
- Introducción al Módulo
fs
- Lectura de Archivos
- Escritura de Archivos
- Manejo de Errores
- Ejercicios Prácticos
- Introducción al Módulo
fs
fs
El módulo fs
de Node.js proporciona una API para interactuar con el sistema de archivos de una manera similar a la que se haría con los comandos de la línea de comandos. Para usar este módulo, primero debemos importarlo:
- Lectura de Archivos
Lectura Síncrona
La lectura síncrona de archivos bloquea el hilo de ejecución hasta que la operación se completa. Esto puede ser útil para scripts simples o cuando la operación de lectura es crítica y debe completarse antes de continuar.
const fs = require('fs'); try { const data = fs.readFileSync('archivo.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); }
Lectura Asíncrona
La lectura asíncrona de archivos no bloquea el hilo de ejecución, permitiendo que otras operaciones continúen mientras se lee el archivo.
const fs = require('fs'); fs.readFile('archivo.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
- Escritura de Archivos
Escritura Síncrona
La escritura síncrona de archivos bloquea el hilo de ejecución hasta que la operación se completa.
const fs = require('fs'); try { fs.writeFileSync('archivo.txt', 'Este es el contenido del archivo', 'utf8'); console.log('Archivo escrito exitosamente'); } catch (err) { console.error(err); }
Escritura Asíncrona
La escritura asíncrona de archivos no bloquea el hilo de ejecución, permitiendo que otras operaciones continúen mientras se escribe el archivo.
const fs = require('fs'); fs.writeFile('archivo.txt', 'Este es el contenido del archivo', 'utf8', (err) => { if (err) { console.error(err); return; } console.log('Archivo escrito exitosamente'); });
- Manejo de Errores
Es importante manejar los errores adecuadamente para evitar que nuestra aplicación falle inesperadamente. Node.js proporciona objetos de error que podemos usar para identificar y manejar diferentes tipos de errores.
Ejemplo de Manejo de Errores
const fs = require('fs'); fs.readFile('archivo_inexistente.txt', 'utf8', (err, data) => { if (err) { if (err.code === 'ENOENT') { console.error('Archivo no encontrado'); } else { console.error(err); } return; } console.log(data); });
- Ejercicios Prácticos
Ejercicio 1: Leer un Archivo
Instrucciones:
- Crea un archivo llamado
ejercicio1.txt
y escribe algo de texto en él. - Escribe un programa en Node.js que lea el contenido de
ejercicio1.txt
y lo imprima en la consola.
Solución:
const fs = require('fs'); fs.readFile('ejercicio1.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
Ejercicio 2: Escribir en un Archivo
Instrucciones:
- Escribe un programa en Node.js que escriba el texto "Hola, Node.js!" en un archivo llamado
ejercicio2.txt
.
Solución:
const fs = require('fs'); fs.writeFile('ejercicio2.txt', 'Hola, Node.js!', 'utf8', (err) => { if (err) { console.error(err); return; } console.log('Archivo escrito exitosamente'); });
Ejercicio 3: Manejo de Errores
Instrucciones:
- Modifica el programa del Ejercicio 1 para manejar el error si el archivo
ejercicio1.txt
no existe.
Solución:
const fs = require('fs'); fs.readFile('ejercicio1.txt', 'utf8', (err, data) => { if (err) { if (err.code === 'ENOENT') { console.error('Archivo no encontrado'); } else { console.error(err); } return; } console.log(data); });
Conclusión
En esta sección, hemos aprendido cómo leer y escribir archivos en Node.js utilizando el módulo fs
. También hemos visto cómo manejar errores de manera efectiva. Estas habilidades son fundamentales para cualquier desarrollador que trabaje con Node.js, ya que la manipulación de archivos es una tarea común en muchas aplicaciones. En el próximo módulo, exploraremos cómo trabajar con streams para manejar grandes volúmenes de datos de manera eficiente.
Curso de Node.js
Módulo 1: Introducción a Node.js
Módulo 2: Conceptos Básicos
Módulo 3: Sistema de Archivos y E/S
Módulo 4: HTTP y Servidores Web
- Creando un Servidor HTTP Simple
- Manejo de Solicitudes y Respuestas
- Sirviendo Archivos Estáticos
- Enrutamiento
Módulo 5: NPM y Gestión de Paquetes
- Introducción a NPM
- Instalación y Uso de Paquetes
- Creación y Publicación de Paquetes
- Versionado Semántico
Módulo 6: Framework Express.js
- Introducción a Express.js
- Configuración de una Aplicación Express
- Middleware
- Enrutamiento en Express
- Manejo de Errores
Módulo 7: Bases de Datos y ORMs
- Introducción a las Bases de Datos
- Usando MongoDB con Mongoose
- Usando Bases de Datos SQL con Sequelize
- Operaciones CRUD
Módulo 8: Autenticación y Autorización
- Introducción a la Autenticación
- Usando Passport.js
- Autenticación JWT
- Control de Acceso Basado en Roles
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con Mocha y Chai
- Pruebas de Integración
- Depuración de Aplicaciones Node.js
Módulo 10: Temas Avanzados
- Módulo Cluster
- Hilos de Trabajo
- Optimización del Rendimiento
- Construcción de APIs RESTful
- GraphQL con Node.js
Módulo 11: Despliegue y DevOps
- Variables de Entorno
- Usando PM2 para la Gestión de Procesos
- Desplegando en Heroku
- Integración y Despliegue Continuos