Utilizzo delle cartelle in Node.js
Il modulo core fs
di Node.js fornisce molti metodi utili per lavorare con le cartelle.
Verifica dell'esistenza di una cartella
Utilizzare fs.access()
(e la sua controparte basata su promise fsPromises.access()
) per verificare se la cartella esiste e Node.js può accedervi con le sue autorizzazioni.
const fs = require('node:fs');
try {
await fs.promises.access('/Users/joe');
} catch (err) {
throw err;
}
Creazione di una nuova cartella
Utilizzare fs.mkdir()
o fs.mkdirSync()
o fsPromises.mkdir()
per creare una nuova cartella.
const fs = require('node:fs');
const folderName = '/Users/joe/test';
try {
fs.mkdirSync(folderName);
} catch (err) {
console.error(err);
}
Lettura del contenuto di una directory
Utilizzare fs.readdir()
o fs.readdirSync()
o fsPromises.readdir()
per leggere il contenuto di una directory.
Questo codice legge il contenuto di una cartella, sia file che sottocartelle, e restituisce il loro percorso relativo:
const fs = require('node:fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName);
});
È possibile ottenere il percorso completo:
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName));
È inoltre possibile filtrare i risultati per restituire solo i file, escludendo le cartelle:
const fs = require('node:fs');
const isFile = fileName => !fileName.includes(path.sep);
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName))
.filter(isFile);
Rinominare una cartella
Utilizzare fs.rename()
o fs.renameSync()
o fsPromises.rename()
per rinominare una cartella. Il primo parametro è il percorso corrente, il secondo il nuovo percorso:
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
if (err) {
console.error(err);
}
});
fs.renameSync()
è la versione sincrona:
const fs = require('node:fs');
try {
fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
console.error(err);
}
fsPromises.rename()
è la versione basata su promise:
const fs = require('node:fs/promises');
async function example() {
try {
await fs.rename('/Users/joe', '/Users/roger');
} catch (err) {
console.log(err);
}
}
example();
Rimuovi una cartella
Usa fs.rmdir()
, fs.rmdirSync()
o fsPromises.rmdir()
per rimuovere una cartella.
const fs = require('node:fs');
fs.rmdir(dir, err => {
if (err) {
throw err;
}
console.log(`${dir} is deleted!`);
});
Per rimuovere una cartella che contiene elementi, usa fs.rm()
con l'opzione { recursive: true }
per rimuovere ricorsivamente il contenuto.
{ recursive: true, force: true }
fa sì che le eccezioni vengano ignorate se la cartella non esiste.
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
if (err) {
throw err;
}
console.log(`${dir} is deleted!`);
});