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
Etiquetas
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í