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 :
- Readable (lecture)
- Writable (écriture)
- Duplex (lecture et écriture simultanées)
- Transform (modification des données pendant le transfert)
Voici un exemple de lecture de fichier en utilisant un flux (stream
):
- 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); });
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'