Vous lisez et écrivez des fichiers avec le module fs/promises et construisez des chemins fiables grâce au module path.
Ouvrir cette leçon dans KodokonDans le navigateur, JavaScript n'a pas le droit de toucher aux fichiers de votre disque : question de sécurité. Node, lui, tourne directement sur votre machine et peut lire et écrire des fichiers grâce au module fs (file system, « système de fichiers »). Nous utiliserons sa version moderne, fs/promises, dont chaque fonction renvoie une promesse - vous savez déjà les attendre avec await, vu dans le parcours JavaScript. Remarquez le préfixe node: dans les imports : il précise que le module vient de Node lui-même, pas de node_modules. Et bonne nouvelle : dans un module ES, await fonctionne directement au niveau du fichier, sans fonction englobante.
import { writeFile } from "node:fs/promises";
await writeFile("notes.txt", "Première note\n");
console.log("Fichier créé !");Pour lire, même logique avec readFile. Son second paramètre est essentiel : utf8 désigne l'encodage, c'est-à-dire la manière de traduire les octets stockés sur le disque en texte lisible. Si vous l'omettez, Node renvoie un objet Buffer - des octets bruts - au lieu d'une chaîne de caractères.
import { readFile } from "node:fs/promises";
const text = await readFile("notes.txt", "utf8");
console.log(text);Parlons chemins. Un chemin relatif (notes.txt, data/log.txt) part du dossier courant ; un chemin absolu (C:\... ou /home/...) part de la racine du disque. Piège classique : Windows sépare les dossiers avec \, macOS et Linux avec /. Le module path règle le problème : path.join assemble les morceaux avec le bon séparateur, quel que soit le système. Combinons-le avec mkdir, qui crée un dossier.
import path from "node:path";
import { mkdir, writeFile } from "node:fs/promises";
const file = path.join("data", "log.txt");
await mkdir("data", { recursive: true });
await writeFile(file, "Premier journal\n");
console.log("Écrit dans :", file);