Saltar al contenido

Obtener todos los archivos de forma recursiva en los directorios NodejS

Solución:

Parece el glob El paquete npm te ayudaría. Aquí hay un ejemplo de cómo usarlo:

Jerarquía de archivos:

test
├── one.html
└── test-nested
    └── two.html

Código JS:

const glob = require("glob");

var getDirectories = function (src, callback) {
  glob(src + '/**/*', callback);
};
getDirectories('test', function (err, res) {
  if (err) {
    console.log('Error', err);
  } else {
    console.log(res);
  }
});

que muestra:

[ 'test/one.html',
  'test/test-nested',
  'test/test-nested/two.html' ]

Aquí está el mío. Como todas las buenas respuestas, es difícil de entender:

const isDirectory = path => statSync(path).isDirectory();
const getDirectories = path =>
    readdirSync(path).map(name => join(path, name)).filter(isDirectory);

const isFile = path => statSync(path).isFile();  
const getFiles = path =>
    readdirSync(path).map(name => join(path, name)).filter(isFile);

const getFilesRecursively = (path) => {
    let dirs = getDirectories(path);
    let files = dirs
        .map(dir => getFilesRecursively(dir)) // go through each directory
        .reduce((a,b) => a.concat(b), []);    // map returns a 2d array (array of file arrays) so flatten
    return files.concat(getFiles(path));
};

He visto muchas respuestas muy largas y es una especie de pérdida de espacio en la memoria. Algunos también usan paquetes como glob, pero si no quiere depender de ningún paquete, aquí está mi solución.

const Path = require("path");
const FS   = require("fs");
let Files  = [];

function ThroughDirectory(Directory) {
    FS.readdirSync(Directory).forEach(File => {
        const Absolute = Path.join(Directory, File);
        if (FS.statSync(Absolute).isDirectory()) return ThroughDirectory(Absolute);
        else return Files.push(Absolute);
    });
}

ThroughDirectory("./input/directory/");

Es bastante evidente. Hay un directorio de entrada y lo recorre en iteración. Si uno de los elementos también es un directorio, revise ese y así sucesivamente. Si es un archivo, agregue la ruta absoluta a la matriz.

Espero que esto haya ayudado:]

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *