Travailler avec des dossiers dans Node.js
Le module principal fs
de Node.js fournit de nombreuses méthodes pratiques que vous pouvez utiliser pour travailler avec des dossiers.
Vérifier si un dossier existe
Utilisez fs.access()
(et son équivalent basé sur les promesses fsPromises.access()
) pour vérifier si le dossier existe et si Node.js peut y accéder avec ses permissions.
const fs = require('node:fs');
try {
await fs.promises.access('/Users/joe');
} catch (err) {
throw err;
}
Créer un nouveau dossier
Utilisez fs.mkdir()
ou fs.mkdirSync()
ou fsPromises.mkdir()
pour créer un nouveau dossier.
const fs = require('node:fs');
const folderName = '/Users/joe/test';
try {
fs.mkdirSync(folderName);
} catch (err) {
console.error(err);
}
Lire le contenu d'un répertoire
Utilisez fs.readdir()
ou fs.readdirSync()
ou fsPromises.readdir()
pour lire le contenu d'un répertoire.
Ce code lit le contenu d'un dossier, les fichiers et les sous-dossiers, et renvoie leur chemin relatif :
const fs = require('node:fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName);
});
Vous pouvez obtenir le chemin complet :
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName));
Vous pouvez également filtrer les résultats pour ne renvoyer que les fichiers, en excluant les dossiers :
const fs = require('node:fs');
const isFile = fileName => !fileName.includes(path.sep);
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName))
.filter(isFile);
Renommer un dossier
Utilisez fs.rename()
ou fs.renameSync()
ou fsPromises.rename()
pour renommer un dossier. Le premier paramètre est le chemin actuel, le second le nouveau chemin :
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
if (err) {
console.error(err);
}
});
fs.renameSync()
est la version synchrone :
const fs = require('node:fs');
try {
fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
console.error(err);
}
fsPromises.rename()
est la version basée sur les promesses :
const fs = require('node:fs/promises');
async function example() {
try {
await fs.rename('/Users/joe', '/Users/roger');
} catch (err) {
console.log(err);
}
}
example();
Supprimer un dossier
Utilisez fs.rmdir()
, fs.rmdirSync()
ou fsPromises.rmdir()
pour supprimer un dossier.
const fs = require('node:fs');
fs.rmdir(dir, err => {
if (err) {
throw err;
}
console.log(`${dir} est supprimé !`);
});
Pour supprimer un dossier contenant du contenu, utilisez fs.rm()
avec l'option { recursive: true }
pour supprimer récursivement le contenu.
{ recursive: true, force: true }
permet d'ignorer les exceptions si le dossier n'existe pas.
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
if (err) {
throw err;
}
console.log(`${dir} est supprimé !`);
});