Un Algoritmo de Búsqueda de Archivos Recursivo en JavaScript

Un algoritmo de búsqueda de archivos recursivo en JavaScript para encontrar un archivo en un directorio y sus subdirectorios

2 min para leer
algoritmo
javascript
nodejs
avanzado

TLDR🥱!!!

¡Simplemente copia el código de aquí holgazán! 😒

¿Qué está Pasando? 🤔

Así que la cosa es,

  • Quería una forma de buscar un archivo dentro de un directorio y todos sus subdirectorios para esta aplicación de electron en la que estaba trabajando.
  • No quería usar bibliotecas, porque … abandono 😒.
  • Por último, solo quería proporcionar una ruta de nivel superior al directorio, para que el usuario no tuviera que preocuparse por los subdirectorios.

Así que estos 👆🏻 tres requisitos, me llevaron a esto 👇🏻

El Código 💻

Ahora el código puede parecer un poco intimidante 👻, pero solo ve a través de él línea por línea y prometo que lo entenderás. 😊

// sustituye con declaraciones `import` si el tipo es `module` const fs = require("fs"); const path = require("path"); function fileSearchRecursive(dirToSearchIn, fileToSearch, callbackFn) { let results = []; fs.readdir(dirToSearchIn, (err, list) => { if (err) return callbackFn(err, []); let pending = list.length; if (!pending) return callbackFn(null, results); list.forEach((file) => { const filename = file; file = path.join(dirToSearchIn, file); fs.stat(file, (_, stat) => { if (stat && stat.isDirectory()) { fileSearchRecursive(file, fileToSearch, (_, res) => { results = results.concat(res); if (!--pending) callbackFn(null, results); }); } else { if (filename.toLowerCase() === fileToSearch.toLowerCase()) { results = results.concat(file); } if (!--pending) callbackFn(null, results); } }); }); }); }

Y llámalo así:

fileSearchRecursive(__dirname, "techy-rabbit.exe", (err, res) => { if (err) { console.error(err); } else { console.log(res); } });

¡Eso es todo!, gracias 🤗 por leer hasta aquí