Node fs, module nodejs pour “File System”, permet aux développeurs de créer et gérer des fichiers pour y stocker ou lire des fichiers dans un programme Node
Créer et gérer des fichiers pour y stocker ou lire des informations font partie des tâches les plus communes d’un serveur. Environnement d’exécution JavaScript côté serveur pensé pour faire gagner du temps aux développeurs, Node.js propose une façon intuitive de travailler avec le système de fichiers à travers son module fs pour “File System”.
Dans ce tutoriel, découvrez comment fonctionnent le module Node FS et ses fonctions principales dans ce guide complet.
Node fs : comment fonctionne le gestionnaire de fichiers Node ?
Le module fs est livré nativement avec Node js. Pour l’inclure dans votre projet, utilisez simplement la fonction require :
const fs = require('fs');
Vous avez désormais accès à un certain nombre de fonctions dont les principales sont :
- Créer des fichiers
- Lire des fichiers
- Écrire dans des fichiers
- Copier des fichiers
- Renommer des fichiers
- Supprimer des fichiers
D’autres fonctions sont disponibles : créer, supprimer ou renommer un dossier ; gérer les permissions relatives à un fichier ; créer des liens symboliques ou tronquer un fichier, etc.
Une chose singulière est à noter sur le module node fs : toutes les fonctions sont asynchrones par défaut (elles ne bloquent pas le code et fonctionnent en arrière-plan) mais peuvent aussi fonctionner synchroniquement. Il suffit alors d’ajouter Sync au nom de la fonction. Par exemple : la fonction pour renommer un fichier fs.readFile() devient fs.readFileSync(). Vous trouverez plus d’informations sur les fonctions fs synchrones plus bas dans le guide.
Create file Node Js : la création de fichier
Le module fs Node propose trois fonctions pour créer un nouveau fichier :
- fs.appendFile()
- fs.open()
- fs.writeFile()
Créer un fichier avec fs.appendFile()
La fonction fs.appendFile() permet d’ajouter du contenu à un fichier. Si le fichier n’existe pas, il est créé.
Créer un fichier vide avec fs.open()
La fonction fs.open() permet d’ouvrir un fichier avec une certaine autorisation. Si l’argument “w” (pour “writing”) est spécifié en deuxième paramètre, le fichier sera ouvert pour écriture. S’il n’existe pas, un fichier vide est créé.
Créer un fichier avec fs.writeFile()
La fonction fs.writeFile() permet de remplacer le contenu d’un fichier avec node fs. Si le fichier n’existe pas, un fichier est créé avec le contenu spécifié.
Node Read File : lire vos fichiers
La fonction fs.readFile() permet de lire un fichier. N’oubliez pas de préciser l’encodage nécessaire à la lecture ! En effet, si vous avez inséré du contenu nécessitant l’encodage utf8 (qui gère tous les caractères spéciaux de tous les alphabets du monde), spécifiez cet encodage en deuxième paramètre de la fonction. Sinon, le contenu de votre fichier ne sera pas interprété comme étant écrit en utf8 et provoquera des erreurs d’interprétation par le module fs.
Node FS Write : écrire dans vos fichiers
Le fs module Node propose plusieurs fonctions pour écrire dans vos fichiers, dont celles que l’on a déjà vues dans la création de fichier :
- fs.appendFile()
- fs.writeFile()
- fs.write()
- fs.createWriteStream
Mettre à jour un fichier avec fs.appendFile()
La fonction fs.appendFile() permet d’ajouter du contenu à la fin d’un fichier avec node fs.
Remplacer le contenu d’un fichier avec fs.writeFile()
La fonction fs.writeFile() permet de remplacer le contenu d’un fichier avec un autre contenu.
Mettre à jour un fichier avec fs.write()
La fonction fs.write() de node fs permet un contrôle plus étendu sur votre édition de fichier. Elle est à utiliser lorsque vous savez précisément à quel octet précis de votre fichier vous souhaitez insérer du contenu.
Écrire dans un fichier via un flux avec fs.createWriteStream()
La fonction fs.createWriteStream() permet de créer un flux et de l’écrire dans un fichier. Utiliser un flux permet d’écrire dans un fichier en plusieurs fois à intervalles réguliers, ce qui économise l’usage de RAM car le fichier n’est pas chargé complètement en mémoire. Cette méthode est à préférer pour la gestion de fichiers particulièrement lourds.
Node FS pour copier vos fichiers
Selon la version de Node que vous utilisez, deux options s’offrent à vous pour copier un fichier :
- fs.createReadStream() et fs.createWriteStream() – avant node v8.5.0
- fs.copyFile() – depuis node v8.5.0
Copier un fichier avec fs.createReadStream() et fs.createWriteStream()
Combiner fs.createReadStream() et fs.createWriteStream() permet de copier un fichier en une seule ligne de code.
JavaScript
Copier un fichier avec fs.copyFile()
Depuis node v.8.5.0, la fonction fs.copyFile() a été introduite et permet de copier un fichier.
Rename file Node Js : pour renommer vos fichiers
La fonction fs.rename() permet de renommer un fichier.
Node FS pour supprimer vos fichiers
La fonction fs.unlink() permet de supprimer un fichier.
ReadFileSync : les fonctions synchrones du module Node fs
Les fonctions du module fs de NodeJS s’exécutent de façon asynchrone par défaut, c’est-à-dire qu’elles ne bloquent pas l’exécution du code avant d’être terminées : elles fonctionnent à l’arrière-plan.
Ces fonctions node fs peuvent également s’exécuter de façon synchrone ou bloquante. L’exécution du reste du code est alors suspendue le temps que la fonction se termine et retourne son résultat.
Pour exécuter une fonction fs synchroniquement, il suffit de rajouter Sync à la fin de la fonction. Par exemple, fs.readFile() devient fs.readFileSync().
Cela peut avoir une énorme incidence sur votre façon de travailler. Par exemple, la fonction fs.rename() s’utilise avec un callback qui signifie la fin de l’exécution de la fonction node fs :
À l’inverse, la fonction fs.renameSync() s’utilise plutôt avec un block try/catch :