Iterare su File e Directory in Node.js

Node.js fornisce potenti strumenti per accedere e manipolare il file system. L'iterazione su file e directory è un'operazione comune, ad esempio per costruire un sistema di gestione file, analisi dati o deploy automatici.

Utilizzare il modulo fs

Il modulo fs (file system) è parte della libreria standard di Node.js. Esistono due principali approcci per lavorare con file e directory: asincrono e sincrono.

Elencare i file in una directory

const fs = require('fs');
const path = require('path');

const directoryPath = path.join(__dirname, 'miodirectory');

fs.readdir(directoryPath, (err, files) => {
  if (err) {
    return console.error('Errore durante la lettura della directory:', err);
  }
  files.forEach(file => {
    console.log(file);
  });
});

Leggere ricorsivamente una directory

const fs = require('fs');
const path = require('path');

function readDirectoryRecursive(dir) {
  fs.readdir(dir, { withFileTypes: true }, (err, entries) => {
    if (err) {
      console.error('Errore:', err);
      return;
    }

    entries.forEach(entry => {
      const fullPath = path.join(dir, entry.name);
      if (entry.isDirectory()) {
        readDirectoryRecursive(fullPath);
      } else {
        console.log(fullPath);
      }
    });
  });
}

readDirectoryRecursive(path.join(__dirname, 'miodirectory'));

Versione sincrona

function readDirectoryRecursiveSync(dir) {
  const entries = fs.readdirSync(dir, { withFileTypes: true });
  for (const entry of entries) {
    const fullPath = path.join(dir, entry.name);
    if (entry.isDirectory()) {
      readDirectoryRecursiveSync(fullPath);
    } else {
      console.log(fullPath);
    }
  }
}

readDirectoryRecursiveSync(path.join(__dirname, 'miodirectory'));

Conclusione

Iterare su file e directory in Node.js è semplice e flessibile grazie al modulo fs. Le versioni asincrone sono preferibili in ambienti ad alte prestazioni, mentre quelle sincrone possono risultare utili per script semplici o operazioni iniziali.

Torna su