Skip to Content
🎉 Utilisez JS efficacement →
Node.jsFondamentauxGestion des fichiers et des flux

🟩 Gestion des fichiers et des flux en Node.js

Dans cette section, nous explorerons comment Node.js gère les fichiers et les flux de données. Le module fs (File System) permet de lire et écrire des fichiers, tandis que les flux (streams) permettent de traiter efficacement de grandes quantités de données de manière asynchrone.

📂 Lire et écrire des fichiers

Le module fs de Node.js fournit une interface pour interagir avec le système de fichiers, permettant de lire, écrire, supprimer, et manipuler des fichiers. Voici un exemple de lecture et d’écriture de fichiers avec le module fs.

📖 Lecture d’un fichier

const fs = require('fs'); fs.readFile('exemple.txt', 'utf8', (err, data) => { if (err) { console.error('Erreur lors de la lecture du fichier :', err); return; } console.log('Contenu du fichier :', data); });

Ici, fs.readFile lit un fichier de manière asynchrone. Si une erreur survient (par exemple, si le fichier n’existe pas), elle est capturée et affichée.

✍️ Écriture dans un fichier

const fs = require('fs'); const contenu = 'Ceci est un exemple de texte.'; fs.writeFile('exemple.txt', contenu, (err) => { if (err) { console.error('Erreur lors de l\'écriture du fichier :', err); return; } console.log('Fichier écrit avec succès !'); });

Avec fs.writeFile, vous pouvez écrire des données dans un fichier. Si le fichier n’existe pas, il est créé. Sinon, il est remplacé.

🔄 Gestion des flux et buffers

Les flux (streams) sont des abstractions pour lire ou écrire des données par petits morceaux, au lieu de charger la totalité en mémoire. Cela est particulièrement utile pour les gros fichiers ou les transferts de données en continu.

Il existe quatre types de flux en Node.js :

  1. Readable (lecture)
  2. Writable (écriture)
  3. Duplex (lecture et écriture simultanées)
  4. Transform (modification des données pendant le transfert)

Voici un exemple de lecture et d’écriture de fichier en utilisant des flux (streams):

  • Lecture avec flux (streams) 📥 :

    const fs = require('fs'); const readStream = fs.createReadStream('grosFichier.txt', 'utf8'); readStream.on('data', (chunk) => { console.log('Nouveau morceau de données :', chunk); }); readStream.on('end', () => { console.log('Lecture du fichier terminée.'); }); readStream.on('error', (err) => { console.error('Erreur lors de la lecture du fichier :', err); });
  • Écriture avec flux (streams) 📤 :

    const fs = require('fs'); const writeStream = fs.createWriteStream('nouveauFichier.txt'); writeStream.write('Première ligne\n'); writeStream.write('Deuxième ligne\n'); writeStream.end('Fin du fichier'); writeStream.on('finish', () => { console.log('Écriture terminée !'); }); writeStream.on('error', (err) => { console.error('Erreur lors de l\'écriture :', err); }); readStream.on('end', () => { console.log('Lecture du fichier terminée.'); }); readStream.on('error', (err) => { console.error('Erreur lors de la lecture du fichier :', err); });

👉 Astuce : Depuis Node.js 10+, vous pouvez aussi utiliser les promesses avec fs.promises pour une gestion asynchrone plus moderne (ex : await fs.promises.readFile('exemple.txt', 'utf8')).

Les buffers sont des zones de mémoire brute allouées pour stocker des données binaires, souvent utilisées lors de la manipulation de flux.

🧊 Utilisation d’un buffer

const buffer = Buffer.from('Bonjour'); console.log(buffer); // <Buffer 42 6f 6e 6a 6f 75 72> console.log(buffer.toString()); // 'Bonjour'

📝 TL;DR

  • Utilisez le module fs pour lire/écrire des fichiers de façon simple.
  • Les flux (streams) permettent de traiter de gros fichiers sans tout charger en mémoire.
  • Les buffers servent à manipuler des données binaires.
  • Privilégiez les méthodes asynchrones pour de meilleures performances.
mis à jour le