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
-
fs.readdirSync(ruta)
: Lee los elementos dentro del directorio especificado. -
path.join(ruta, elemento)
: Construye una ruta completa combinando el directorio padre con el nombre del elemento. -
fs.statSync(rutaCompleta)
: Obtiene información detallada del elemento, como si es un archivo o directorio. -
mime.lookup(rutaCompleta)
: Devuelve el tipo MIME del archivo, comotext/plain
oimage/png
. -
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.