Skip to content

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.