📢 Nuovo Corso Laravel API disponibile!

Lavorare con cartelle in Node.js

Il modulo principale fs di Node.js fornisce molti metodi utili che puoi utilizzare per lavorare con le cartelle.

Verificare se una cartella esiste

Utilizza fs.access() (e il suo corrispettivo basato su promesse fsPromises.access()) per verificare se la cartella esiste e se Node.js può accedervi con i suoi permessi.

Creare una nuova cartella

Utilizza fs.mkdir() o fs.mkdirSync() o fsPromises.mkdir() per creare una nuova cartella.

const fs = require("node:fs");
const folderName = "/Users/joe/test";
try {
if (!fs.existsSync(folderName)) {
fs.mkdirSync(folderName);
}
} catch (err) {
console.error(err);
}

Leggere il contenuto di una directory

Utilizza fs.readdir() o fs.readdirSync() o fsPromises.readdir() per leggere il contenuto di una directory.

Questo pezzo di 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);

Puoi ottenere il percorso completo:

fs.readdirSync(folderPath).map((fileName) => {
return path.join(folderPath, fileName);
});

Puoi anche filtrare i risultati per restituire solo i file ed escludere le cartelle:

const fs = require("node:fs");
const isFile = (fileName) => {
return fs.lstatSync(fileName).isFile();
};
fs.readdirSync(folderPath)
.map((fileName) => {
return path.join(folderPath, fileName);
})
.filter(isFile);

Rinominare una cartella

Utilizza 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);
}
// Fatto
});

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 promesse:

const fs = require("node:fs/promises");
async function example() {
try {
await fs.rename("/Users/joe", "/Users/roger");
} catch (err) {
console.log(err);
}
}
example();

Rimuovere una cartella

Utilizza fs.rmdir() o 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} è stato eliminato!`);
});

Per rimuovere una cartella che ha contenuti, usa fs.rm() con l’opzione { recursive: true } per rimuovere ricorsivamente i contenuti.

{ 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} è stato eliminato!`);
});