Appearance
Utilisation du module FileSystem
Le module FileSystem
(fs) de NodeJS permet d'interagir avec le système de fichiers de l'ordinateur. Grâce à ce module, vous pouvez lire, écrire, supprimer, etc., des fichiers et des dossiers. Voici un guide pour comprendre comment utiliser readFile
et writeFile
avec le module FileSystem.
Importer le module FileSystem
javascript
import fs from 'fs'
import fs from 'fs'
Utiliser import/from
Pour l'utilisation de import/from, vous devez avoir configuré votre projet pour utiliser ES Modules. Mettez à jour votre fichier package.json
avec "type": "module"
writeFile
La méthode writeFile
est utilisée pour écrire des données dans un fichier. Si le fichier n'existe pas, il sera créé.
javascript
fs.writeFile('exemple.txt', 'Bonjour, le monde!', (err) => {
if (err) throw err;
console.log('Le fichier a été sauvegardé !');
});
fs.writeFile('exemple.txt', 'Bonjour, le monde!', (err) => {
if (err) throw err;
console.log('Le fichier a été sauvegardé !');
});
readFile
La méthode readFile
est utilisée pour lire le contenu d'un fichier.
javascript
fs.readFile('exemple.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data); // Affiche : Bonjour, le monde!
});
fs.readFile('exemple.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data); // Affiche : Bonjour, le monde!
});
Synchrone vs Asynchrone
NodeJS et la librairie libuv intégrée utilisent principalement des opérations asynchrones non bloquantes pour interagir avec le système d'exploitation, ce qui permet d'exécuter plusieurs opérations simultanément sans attendre la fin de l'une d'entre elles.
Asynchrone
Les méthodes asynchrones, telles que fs.readFile
et fs.writeFile
, sont non-bloquantes. Elles permettent à d'autres opérations de s'exécuter pendant que le système de fichiers effectue l'opération demandée.
Synchrone
Les versions synchrones de ces méthodes, comme fs.readFileSync
et fs.writeFileSync
, sont bloquantes. Cela signifie qu'aucune autre opération ne peut s'exécuter tant que l'opération de système de fichiers n'est pas terminée.
javascript
// Synchrone
try {
fs.writeFileSync('exemple.txt', 'Bonjour, le monde!');
console.log('Le fichier a été sauvegardé !');
} catch (err) {
throw err;
}
try {
const data = fs.readFileSync('exemple.txt', 'utf8');
console.log(data); // Affiche : Bonjour, le monde!
} catch (err) {
throw err;
}
// Synchrone
try {
fs.writeFileSync('exemple.txt', 'Bonjour, le monde!');
console.log('Le fichier a été sauvegardé !');
} catch (err) {
throw err;
}
try {
const data = fs.readFileSync('exemple.txt', 'utf8');
console.log(data); // Affiche : Bonjour, le monde!
} catch (err) {
throw err;
}
Libuv et Asynchronisme
Libuv est la bibliothèque en C qui permet à Node.js de gérer de manière asynchrone plusieurs opérations, comme la lecture et l'écriture sur le système de fichiers. Elle utilise un modèle d'événement non bloquant et, pour les opérations de système de fichiers, elle utilise des threads en arrière-plan pour ne pas bloquer le thread principal de l'application.
Conseil: Asynchrone ou Synchrone?
Dans la plupart des cas, l'utilisation de méthodes asynchrones est recommandée pour ne pas bloquer le flux d'exécution principal et pour optimiser la performance de votre application. Les méthodes synchrones peuvent être utiles dans des scénarios spécifiques, par exemple lors de l'initialisation de l'application, où vous souhaitez charger des configurations avant de continuer l'exécution.