Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 26, 2022 02:43 pm GMT

Cmo leer todos los archivos de un directorio con Node?

Una tarea comn en una aplicacin en un servidor es obtener un listado de archivos que existen dentro de algn directorio para despus realizar alguna tarea con ellos.

Nodejs ofrece una API que permite trabajar con archivos incluyendo la posibilidad de leer el contenido de un directorio de forma sncrona y asncrona (con callbacks o promesas).

/* Leer el contenido de un directorio de forma sincrona */// files es un arreglo con los nombres de los archivos dentro del directorioimport fs from 'node:fs'const files = fs.readdirSync('./mi-directorio') /* Leer el contenido de un directorio de forma asincrona usando callbacks*/import fs from 'node:fs'let files = []fs.readdir('./mi-directorio',(err, result) => {  if(err) {    console.error(err)    throw Error(err)  }  files = result}) /* Leer el contenido de un directorio de forma asincrona usando promesas*/import fs from 'node:fs'const files = await fs.promises.readdir('./mi-directorio')

Pero esto solo retornar la lista de archivos y directorios del "primer nivel", es decir, si tienes un estructura de directorio como:

undefined

El resultado ser:

[  'node_modules',  'public',  'src',  '.gitignore',  'package.json',  'README.md']

Cmo obtener todos los archivos incluyendo los sub-directorios?

Recursin es la respuesta:

async function readAllFiles(path, arrayOfFiles = []){    const files = fs.readdirSync(path)    files.forEach(file => {        const stat = fs.statSync(`${path}/${file}`)        if(stat.isDirectory()){            readAllFiles(`${path}/${file}`, arrayOfFiles)        }else{            arrayOfFiles.push(`${path}/${file}`)        }    }    )    return arrayOfFiles}

La funcin de arriba realiza la lectura del contenido de un directorio

const file = fs.readdirSync(path)

Luego, para cada uno de los elementos del arreglo retornado files.forEach revisa si dicho elemento es o no un directorio

const stat = fs.statSync(`${path}/${file}`)if(stat.isDirectory())

En caso de ser un directorio, realiza una llamada recursiva, cambiando el primer argumento para que sea el actual directorio.

readAllFiles(`${path}/${file}`, arrayOfFiles)

En caso contrario, simplemente almacena en el arreglo arrayOfFiles el archivo.

As, el resultado de leer la estructura de directorios anterior el resultado ser

[      ................      'public/favicon.ico',    'public/index.html,    'public/robots.txt',      'src/index.css',    'src/index.js',      '.gitignore',      'package.json',      'README.md'  ]

Footer Social Card.jpg
nete a Micro-bytes Sgueme en Twitter Apoya mi trabajo


Original Link: https://dev.to/matiasfha/como-leer-todos-los-archivos-de-un-directorio-con-node-mbp

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To