Listar directorio con nodejs


En este post realizaremos un ejercicio de listar directorios y archivos usando nodejs, veremos los comandos fs, path y minetype

oscar Escrito por oscar 06 November 2024 108 0

Node.js es una poderosa herramienta para trabajar con el sistema de archivos de tu computadora. En este tutorial, aprenderás a listar directorios y archivos usando las librerías incorporadas fs y path, junto con la librería externa mime-types para identificar el tipo de archivo.

Configuración Inicial

Antes de comenzar, asegúrate de tener Node.js instalado. También necesitarás instalar la librería mime-types. Puedes hacerlo ejecutando

npm install mime-types

Código Paso a Paso

A continuación, presentamos el código para listar archivos y directorios de manera recursiva

const fs = require('fs').promises;
const path = require('path');
const mime = require('mime-types');

async function listDirectoryContents(directory) {
    try {
        // Lee el contenido del directorio
        const items = await fs.readdir(directory, { withFileTypes: true });

        // Recorre cada elemento dentro del directorio
        for (const item of items) {
            const fullPath = path.join(directory, item.name);
            if (item.isDirectory()) {
                //console.log(`Carpeta: ${fullPath}`);
                // Llamada recursiva para listar el contenido de la carpeta
                await listDirectoryContents(fullPath);
            } else if (item.isFile()) {
                const stats = await fs.stat(fullPath);
                const extension = path.extname(item.name);
                const mimeType = mime.lookup(extension) || 'Desconocido';
                console.log(`Archivo: ${item.name}   Extensión: ${extension}   Tipo MIME: ${mimeType}`);
            }
        }
    } catch (error) {
        console.error(`Error al leer el directorio: ${error.message}`);
    }
}

// Llama a la función con el directorio que quieras listar
listDirectoryContents('/opt');

Explicación del Código

  1. fs.readdirSync(ruta): Lee los elementos dentro del directorio especificado.

  2. path.join(ruta, elemento): Construye una ruta completa combinando el directorio padre con el nombre del elemento.

  3. fs.statSync(rutaCompleta): Obtiene información detallada del elemento, como si es un archivo o directorio.

  4. mime.lookup(rutaCompleta): Devuelve el tipo MIME del archivo, como text/plain o image/png.

  5. Recursión: Si el elemento es un directorio, la función se llama a sí misma con la nueva ruta.

Ejemplo de Salida

Imaginemos que tienes la siguiente estructura:

Archivo: image   Extensión: png   Tipo MIME: image/png

Con este código, puedes explorar el sistema de archivos de manera eficiente utilizando las herramientas que Node.js y sus librerías proporcionan. Experimenta modificándolo para adaptarlo a tus necesidades, como guardar los resultados en un archivo o filtrar tipos MIME específicos.


Comentario

Debe aceptar antes de enviar