Travailler avec le système de fichiers en JavaScript (Node.js) : guide complet pour débutants
Travailler avec le système de fichiers est l'une des tâches clés lors de la création d'applications serveur, de scripts d'automatisation ou d'utilitaires de traitement de données. En JavaScript (Node.js), il existe pour cela le module intégré fs (File System). Cet article vous présentera les bases du travail avec les fichiers et dossiers dans Node.js, vous montrera comment lire, écrire, créer et supprimer des fichiers, et expliquera la différence entre les méthodes synchrones et asynchrones.
Qu'est-ce que le module fs dans Node.js ?
Le module fs fournit une API pour interagir avec le système de fichiers du système d'exploitation. Il permet d'effectuer des opérations telles que :
- Lecture du contenu des fichiers
- Écriture de données dans des fichiers
- Création et suppression de répertoires
- Renommage et copie de fichiers
- Vérification de l'existence de fichiers
- Obtention d'informations sur les fichiers (statistiques)
Pour commencer à utiliser le module fs, vous devez l'importer dans votre code :
const fs = require('fs');Toutes les méthodes du module fs sont disponibles en trois variantes : synchrone (avec le suffixe Sync), asynchrone avec callbacks et asynchrone basée sur les promesses (en utilisant fs.promises). Dans ce guide, nous nous concentrerons sur l'approche moderne utilisant async/await.
Lecture de fichiers dans Node.js
La façon la plus simple de lire le contenu d'un fichier est d'utiliser la méthode readFile de fs.promises. Regardons un exemple :
const fs = require('fs').promises;
async function readFileExample() { try { const data = await fs.readFile('example.txt', 'utf8'); console.log('Contenu du fichier :', data); } catch (error) { console.error('Erreur lors de la lecture du fichier :', error.message); }}
readFileExample();Dans cet exemple :
- Nous importons
fs.promises— la version du module qui retourne des promesses. - La fonction
readFileprend le chemin du fichier et l'encodage (dans ce cas'utf8'). - Si le fichier n'existe pas, une erreur sera levée, que nous traitons dans le bloc
catch.
Si vous devez lire un fichier de manière synchrone (dans des scripts simples), utilisez readFileSync :
const fs = require('fs');
try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data);} catch (error) { console.error(error.message);}Important : Les méthodes synchrones bloquent l'exécution du code jusqu'à la fin de l'opération. Dans les applications serveur (par exemple, sur Express), utilisez toujours les méthodes asynchrones pour ne pas bloquer le traitement des autres requêtes.
Écriture de données dans des fichiers
Pour écrire des données dans un fichier, on utilise la méthode writeFile. Si le fichier existe, son contenu sera écrasé. Si le fichier n'existe pas, il sera créé automatiquement.
const fs = require('fs').promises;
async function writeFileExample() { try { const content = 'Bonjour le monde ! Ceci est un test d\'écriture.'; await fs.writeFile('output.txt', content, 'utf8'); console.log('Fichier écrit avec succès !'); } catch (error) { console.error('Erreur d\'écriture :', error.message); }}
writeFileExample();Si vous souhaitez ajouter des données à la fin d'un fichier existant (sans l'écraser), utilisez le drapeau appendFile :
const fs = require('fs').promises;
async function appendToFile() { try { await fs.appendFile('log.txt', `Nouvelle entrée : ${new Date()}`, 'utf8'); console.log('Données ajoutées à la fin du fichier'); } catch (error) { console.error('Erreur :', error.message);\