Lecture et écriture de fichiers
Conditions d’achèvement
Node.js fournit un module intégré appelé fs (File System) pour interagir avec le système de fichiers. Avec ce module, vous pouvez effectuer des opérations de lecture et d'écriture de fichiers de manière synchrone ou asynchrone.
Lecture de Fichiers
Lecture Asynchrone:
const fs = require('fs');
fs.readFile('chemin/vers/le/fichier.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
Lecture Synchrone:
const fs = require('fs');
try {
const data = fs.readFileSync('chemin/vers/le/fichier.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
Dans les exemples ci-dessus, 'utf8' spécifie l'encodage du fichier. Si vous lisez des fichiers binaires, omettez l'encodage pour obtenir un Buffer au lieu d'une string.
Écriture de Fichiers
Écriture Asynchrone:
const fs = require('fs');
const content = 'Quelque contenu à écrire dans le fichier';
fs.writeFile('chemin/vers/le/fichier.txt', content, 'utf8', (err) => {
if (err) {
console.error(err);
return;
}
console.log('Fichier écrit avec succès');
});
Écriture Synchrone:
const fs = require('fs');
const content = 'Quelque contenu à écrire dans le fichier';
try {
fs.writeFileSync('chemin/vers/le/fichier.txt', content, 'utf8');
console.log('Fichier écrit avec succès');
} catch (err) {
console.error(err);
}
Ajout de Contenu à un Fichier Existant
Ajout Asynchrone:
const fs = require('fs');
const content = '\nNouvelle ligne à ajouter';
fs.appendFile('chemin/vers/le/fichier.txt', content, 'utf8', (err) => {
if (err) {
console.error(err);
return;
}
console.log('Contenu ajouté avec succès');
});
Ajout Synchrone:
const fs = require('fs');
const content = '\nNouvelle ligne à ajouter';
try {
fs.appendFileSync('chemin/vers/le/fichier.txt', content, 'utf8');
console.log('Contenu ajouté avec succès');
} catch (err) {
console.error(err);
}
Conseils d'Utilisation
- Asynchrone vs Synchrone: Les opérations asynchrones sont généralement préférées car elles ne bloquent pas le thread principal de Node.js. Les opérations synchrones peuvent être plus simples à écrire et à comprendre, mais elles peuvent ralentir votre application si elles sont utilisées pour des fichiers volumineux ou en grande quantité.
- Gestion des Erreurs: Toujours vérifier les erreurs dans les callbacks asynchrones et utiliser des blocs
try/catchpour les opérations synchrones. - Streams: Pour lire ou écrire de grands fichiers, envisagez d'utiliser des streams pour éviter de charger tout le contenu du fichier en mémoire à la fois.
- Promises et Async/Await: À partir de Node.js v10.0.0, vous pouvez utiliser
fs.promisesouutil.promisifypour travailler avec des promesses au lieu de callbacks, ce qui permet d'utiliserasync/awaitpour un code plus lisible.
Exemple avec Promises et Async/Await
Lecture de Fichier avec Promises:
const fs = require('fs').promises;
async function lireFichier(chemin) {
try {
const data = await fs.readFile(chemin, 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
}
lireFichier('chemin/vers/le/fichier.txt');
Écriture de Fichier avec Promises:
const fs = require('fs').promises;
async function ecrireFichier(chemin, contenu) {
try {
await fs.writeFile(chemin, contenu, 'utf8');
console.log('Fichier écrit avec succès');
} catch (err) {
console.error(err);
}
}
ecrireFichier('chemin/vers/le/fichier.txt', 'Quelque contenu à écrire');
En utilisant fs.promises, vous pouvez écrire du code asynchrone qui est plus proche du style synchrone traditionnel, tout en conservant les avantages de l'asynchronisme.
Modifié le: jeudi 2 novembre 2023, 06:09