En este tema, aprenderemos a utilizar el módulo del sistema de archivos (fs) en Node.js. Este módulo nos permite interactuar con el sistema de archivos del servidor, lo que incluye la lectura, escritura, actualización y eliminación de archivos.

Contenido

  1. Introducción al módulo fs
  2. Métodos de lectura de archivos
  3. Métodos de escritura de archivos
  4. Métodos de actualización de archivos
  5. Métodos de eliminación de archivos
  6. Ejercicios prácticos

  1. Introducción al módulo fs

El módulo fs es uno de los módulos principales de Node.js y se utiliza para manejar el sistema de archivos. Para utilizar este módulo, primero debemos importarlo en nuestro archivo JavaScript.

const fs = require('fs');

  1. Métodos de lectura de archivos

fs.readFile()

El método fs.readFile() se utiliza para leer el contenido de un archivo de manera asíncrona. Acepta tres parámetros: la ruta del archivo, la codificación y un callback que maneja el resultado.

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

fs.readFileSync()

El método fs.readFileSync() es la versión sincrónica de fs.readFile(). Bloquea el hilo de ejecución hasta que la operación de lectura se completa.

try {
    const data = fs.readFileSync('ruta/del/archivo.txt', 'utf8');
    console.log('Contenido del archivo:', data);
} catch (err) {
    console.error('Error leyendo el archivo:', err);
}

  1. Métodos de escritura de archivos

fs.writeFile()

El método fs.writeFile() se utiliza para escribir datos en un archivo de manera asíncrona. Si el archivo no existe, se crea; si existe, se sobrescribe.

const contenido = 'Este es el contenido del archivo';

fs.writeFile('ruta/del/archivo.txt', contenido, 'utf8', (err) => {
    if (err) {
        console.error('Error escribiendo el archivo:', err);
        return;
    }
    console.log('Archivo escrito exitosamente');
});

fs.writeFileSync()

El método fs.writeFileSync() es la versión sincrónica de fs.writeFile(). Bloquea el hilo de ejecución hasta que la operación de escritura se completa.

const contenido = 'Este es el contenido del archivo';

try {
    fs.writeFileSync('ruta/del/archivo.txt', contenido, 'utf8');
    console.log('Archivo escrito exitosamente');
} catch (err) {
    console.error('Error escribiendo el archivo:', err);
}

  1. Métodos de actualización de archivos

fs.appendFile()

El método fs.appendFile() se utiliza para agregar datos al final de un archivo de manera asíncrona. Si el archivo no existe, se crea.

const contenidoAdicional = '\nEste es el contenido adicional';

fs.appendFile('ruta/del/archivo.txt', contenidoAdicional, 'utf8', (err) => {
    if (err) {
        console.error('Error agregando contenido al archivo:', err);
        return;
    }
    console.log('Contenido agregado exitosamente');
});

fs.appendFileSync()

El método fs.appendFileSync() es la versión sincrónica de fs.appendFile(). Bloquea el hilo de ejecución hasta que la operación de actualización se completa.

const contenidoAdicional = '\nEste es el contenido adicional';

try {
    fs.appendFileSync('ruta/del/archivo.txt', contenidoAdicional, 'utf8');
    console.log('Contenido agregado exitosamente');
} catch (err) {
    console.error('Error agregando contenido al archivo:', err);
}

  1. Métodos de eliminación de archivos

fs.unlink()

El método fs.unlink() se utiliza para eliminar un archivo de manera asíncrona.

fs.unlink('ruta/del/archivo.txt', (err) => {
    if (err) {
        console.error('Error eliminando el archivo:', err);
        return;
    }
    console.log('Archivo eliminado exitosamente');
});

fs.unlinkSync()

El método fs.unlinkSync() es la versión sincrónica de fs.unlink(). Bloquea el hilo de ejecución hasta que la operación de eliminación se completa.

try {
    fs.unlinkSync('ruta/del/archivo.txt');
    console.log('Archivo eliminado exitosamente');
} catch (err) {
    console.error('Error eliminando el archivo:', err);
}

  1. Ejercicios prácticos

Ejercicio 1: Leer y escribir archivos

Instrucciones:

  1. Crea un archivo llamado input.txt con algún contenido de texto.
  2. Escribe un programa en Node.js que lea el contenido de input.txt y lo escriba en un nuevo archivo llamado output.txt.

Solución:

const fs = require('fs');

fs.readFile('input.txt', 'utf8', (err, data) => {
    if (err) {
        console.error('Error leyendo el archivo:', err);
        return;
    }

    fs.writeFile('output.txt', data, 'utf8', (err) => {
        if (err) {
            console.error('Error escribiendo el archivo:', err);
            return;
        }
        console.log('Contenido copiado exitosamente');
    });
});

Ejercicio 2: Actualizar un archivo

Instrucciones:

  1. Crea un archivo llamado log.txt con algún contenido inicial.
  2. Escribe un programa en Node.js que agregue una nueva línea de texto a log.txt cada vez que se ejecute.

Solución:

const fs = require('fs');

const nuevaEntrada = `Nueva entrada de log: ${new Date().toISOString()}\n`;

fs.appendFile('log.txt', nuevaEntrada, 'utf8', (err) => {
    if (err) {
        console.error('Error agregando contenido al archivo:', err);
        return;
    }
    console.log('Nueva entrada de log agregada exitosamente');
});

Conclusión

En este tema, hemos aprendido a utilizar el módulo del sistema de archivos (fs) en Node.js para realizar operaciones de lectura, escritura, actualización y eliminación de archivos. Estos conocimientos son fundamentales para cualquier desarrollador que trabaje con Node.js, ya que permiten interactuar con el sistema de archivos del servidor de manera eficiente y efectiva.

En el próximo tema, exploraremos cómo trabajar con Streams en Node.js, lo que nos permitirá manejar grandes volúmenes de datos de manera más 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

Módulo 5: NPM y Gestión de Paquetes

Módulo 6: Framework Express.js

Módulo 7: Bases de Datos y ORMs

Módulo 8: Autenticación y Autorización

Módulo 9: Pruebas y Depuración

Módulo 10: Temas Avanzados

Módulo 11: Despliegue y DevOps

Módulo 12: Proyectos del Mundo Real

© Copyright 2024. Todos los derechos reservados