Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

386
Vistas
Obtenga todos los archivos dentro de una carpeta que contiene una cadena, envíe los nombres de archivo a la matriz y devuelva la matriz usando Node FS

Como describe el título, me gustaría leer todos los archivos de un directorio específico y devolver los nombres de todos los archivos que tienen una cadena específica en su contenido.

Así es como se ve mi código hasta ahora:

 const dirname = path.resolve("./results/"); async function readFiles(dirname) { const allResults = [] fs.readdir(dirname, function(err, filenames) { if (err) { console.log(err); return; } filenames.forEach(async function(filename) { fs.readFile(dirname + "/" + filename, 'utf-8', function(err, content) { if (err) { console.log(err); return; } if (content.includes('content string')) { allResults.push(filename); } }); }); }); return allResults; } readFiles(dirname).then((res) => { console.log(res); })

El resultado que obtengo es []

así que entiendo que es un problema con las promesas y las funciones asíncronas, sin embargo, este no es un concepto que comprenda completamente todavía, y a pesar de probar varias combinaciones de posibilidades ( new Promise() , o .then , .then , o await y readdirSync ) readFileSync sin éxito.

¿Qué me falta para que devuelva la matriz allResults solo una vez que se hayan leído todos los archivos?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe deshacerse de la sintaxis de devolución de llamada y usar fs.promises Api. Esto se ve mucho más limpio

 const fs = require("fs").promises; const path = require("path"); const dirname = path.resolve("./results/"); async function readDir(dirname) { const allResults = []; try { const files = await fs.readdir(dirname); for (const fileName of files) { try { const content = await fs.readFile(`${dirname}/${fileName}`, { encoding: "utf-8" }); if (content.includes("content string")) { allResults.push(fileName); } } catch (error) { console.log(error.message); } } return allResults; } catch (error) { console.log(error); } } readDir(dirname).then(data => { console.log(data); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda