Skip to content

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.

javascript
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.

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

javascript
const fs = require('node:fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath).map(fileName => {
  return path.join(folderPath, fileName);
});

È possibile ottenere il percorso completo:

javascript
fs.readdirSync(folderPath)
  .map(fileName => path.join(folderPath, fileName));

È inoltre possibile filtrare i risultati per restituire solo i file, escludendo le cartelle:

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

javascript
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
  if (err) {
    console.error(err);
  }
});

fs.renameSync() è la versione sincrona:

javascript
const fs = require('node:fs');
try {
  fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
  console.error(err);
}

fsPromises.rename() è la versione basata su promise:

javascript
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.

javascript
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.

javascript
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
  if (err) {
    throw err;
  }
  console.log(`${dir} is deleted!`);
});