Dans ce premier chapitre consacré à NodeJS nous allons voir comment lire et écrire des fichiers.
Support de import EcmaScript
Par défaut, les version actuelles de NodeJS n'utilisent pas par défaut le système d'import d'EcmaScript et ne comprendront pas la syntaxe avec import. Pour forcer ce support vous avez 2 possibilités.
- Changer l'extension de vos fichier pour utiliser
.mjs - Ajouter une propriété
"type": "module"dans votrepackage.json(vous pouvez générer ce fichier à l'aide de la commandenpm init)
Les modules NodeJS
Pour importer les modules propres à NodeJS on utilisera le nom du module préfixé par node:.
On aura aussi la possibilité de n'importer que la méthode qui nous intéresse.
Synchrone ou Asynchrone
La plupart des méthodes liées aux fichiers disposent de 3 versions
fs.<nom>Syncpermet de faire une opération de manière synchrone (en bloquant votre script).fs.<nom>permet de faire une opération de manière asynchrone en utilisant un callback en paramètre.fsPromises.<nom>permet de faire une opération de manière asynchrone en renvoyant une promesse.
En général, on aura tendance à utiliser la version avec les promesses vu qu'elle offre la forme la plus moderne. Par exemple pour lire un fichier on utilisera la méthode de cette manière.
Méthodes utiles
Pour découvrir les différentes méthodes vous pouvez parcourir la documentation sur le système de fichier mais je vous propose une sélection des méthodes les plus utiles.
- readFile permet de lire un fichier (utiliser l'option
encodingpour obtenir une chaîne de caractères). - writeFile permet d'écrire dans un fichier (utiliser l'option
flagen fonction de ce que vous voulez faire). - copyFile
- rename
- rm permet de supprimer un fichier.
- readdir permet de lire le contenu d'un dossier.
- stat permet d'obtenir des informations sur un fichier (taille, date de création, date de modification...).
Attention au chemin
Attention, si les chemins que vous passez à ces différentes méthodes sont relatifs ils seront résolus par rapport au dossier dans lequel vous éxécutez le script NodeJS (et non pas relativement au fichier JavaScript dans lequel se trouve le code). Si vous voulez récupérer le chemin du fichier courant vous pouvez utiliser import.meta.url
Lecture et écriture plus fine
Pour des opérations plus fines sur les fichiers il est possible d'utiliser les méthodes write et read qu'il faudra utiliser sur un fichier préalablement ouvert.