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.