Cómo listar todos los archivos y carpetas de una ruta específica en Node.js

Introducción: En este artículo, te mostraremos cómo listar todos los archivos y carpetas de una ruta específica en Node.js. Para ello, utilizaremos el módulo fs de Node.js, que nos permite trabajar con el sistema de archivos de nuestro sistema operativo. Aprenderás cómo escanear todos los archivos y carpetas en una ruta y guardar la información en un archivo JSON.

Cómo funciona el código

El código se divide en dos partes principales: la función scanDirs y la escritura del archivo JSON.

La función scanDirs toma una ruta de directorio como entrada y utiliza la función fs.readdirSync para obtener una lista de todos los archivos y carpetas en ese directorio. Luego, recorre esta lista y utiliza la función fs.lstatSync para obtener información sobre cada archivo y carpeta. Si el archivo o carpeta es un directorio, la función llama a sí misma para escanear ese directorio también. La información de cada archivo y carpeta se almacena en un objeto y se agrega a un arreglo.

Una vez que se han escaneado todos los archivos y carpetas, la información se convierte en formato JSON utilizando la función JSON.stringify. Finalmente, se utiliza la función fs.writeFile para guardar la información en un archivo llamado «resultado.json».

Código completo

//Listar archivos.
const path = require(‘path’);
const fs = require(‘fs’);

var data=[];

console.log(«Buscando…»)
function scanDirs(directoryPath){
   try{
      var ls=fs.readdirSync(directoryPath);

      for (let index = 0; index < ls.length; index++) {
         const file = path.join(directoryPath, ls[index]);
         var dataFile =null;
         try{
            dataFile =fs.lstatSync(file);
         }catch(e){}

         if(dataFile){
            data.push(
               {
                  path: file,
                  isDirectory: dataFile.isDirectory(),
                  length: dataFile.size
               });

            if(dataFile.isDirectory()){
               scanDirs(file)
            }
         }
      }
   }catch(e){}
}

scanDirs(‘/ruta/a/listar’);

const jsonString = JSON.stringify(data);

fs.writeFile(‘./resultado.json’, jsonString, err => {
   if (err) {
      console.log(‘Error al escribir en el archivo’, err)
   } else {
      console.log(‘Archivo guardado.’)
   }
});

 

Resultado en Json

[{
    «path»: «/ruta/a/listar/carpeta1»,
    «isDirectory»: true,
    «length»: 0
 }, {
    «path»: «/ruta/a/listar/carpeta2»,
    «isDirectory»: true,
    «length»: 0
 }, {
    «path»: «/ruta/a/listar/documento.txt»,
    «isDirectory»: false,
    «length»: 0
 }, {
    «path»: «/ruta/a/listar/texto.txt»,
    «isDirectory»: false,
    «length»: 4
 }] 

Conclusión

Ahora que sabes cómo listar todos los archivos y carpetas de una ruta específica en Node.js, podrás utilizar este conocimiento en tus proyectos futuros. Esperamos que este artículo te haya sido útil y que puedas poner en práctica lo que has aprendido. ¡No dudes en compartir este artículo con otros desarrolladores!

Deja un comentario