Le module fs (File System) de Node.js fournit des API pour interagir avec le systeme de fichiers local via des Promesses, des rappels ou de maniere synchrone.
API Basée sur les Promesses (fs/promises)
const fs = require('fs/promises');
// import fs from 'node:fs/promises';
// Lire le fichier sous forme de chaine UTF-8
const content = await fs.readFile('data.txt', 'utf8');
// Ecrire ou remplacer le contenu du fichier
await fs.writeFile('output.txt', 'Hello World', 'utf8');
// Ajouter du contenu a la fin du fichier
await fs.appendFile('log.txt', 'New entry\n', 'utf8');
// Verifier l'existence et les permissions d'acces
try {
await fs.access('config.json');
} catch {
console.log('Le fichier n'existe pas ou n'est pas accessible');
}
API Synchrone
const fs = require('fs');
const data = fs.readFileSync('input.txt', 'utf8');
fs.writeFileSync('output.txt', data);
fs.appendFileSync('output.txt', '\nappended');
const exists = fs.existsSync('file.txt');
Métadonnées et Statistiques (fs.stat)
const stats = await fs.stat('file.txt');
stats.isFile(); // -> fichier ordinaire (true / false)
stats.isDirectory(); // -> repertoire (true / false)
stats.isSymbolicLink(); // -> lien symbolique (true / false)
stats.size; // Taille du fichier en octets
stats.mtime; // Date et heure de derniere modification
Opérations sur les Répertoires
// Lister les entrees du repertoire
const files = await fs.readdir('src/');
// Creation recursive de repertoires
await fs.mkdir('build/assets/css', { recursive: true });
// Suppression recursive de repertoires
await fs.rm('dist/', { recursive: true, force: true });
Surveillance du Système de Fichiers (fs.watch)
const fs = require('fs');
const watcher = fs.watch('src/', { recursive: true }, (eventType, filename) => {
console.log(`Event: ${eventType} on ${filename}`);
});
// Arreter la surveillance
watcher.close();
Descripteurs de Fichiers (File Descriptors)
const fs = require('fs/promises');
// Ouvrir en lecture seule
const filehandle = await fs.open('archive.bin', 'r');
// Allouer un tampon de 1024 octets
const buffer = Buffer.alloc(1024);
// Lire les octets dans le tampon
const { bytesRead } = await filehandle.read(buffer, 0, 1024, 0);
await filehandle.close();