Menu
CoddyTech

Écrire dans un fichier

Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 14 sur 33.

add oublie la note dès que le programme se termine.

writeFileSync(path, text) écrit un fichier en remplaçant tout ce qu’il contenait. JSON.stringify transforme un tableau en texte JSON, et null, 2 l’indente de deux espaces pour qu’il soit lisible dans Files.

import { writeFileSync } from 'node:fs';

const scores = [12, 40];
scores.push(31);
writeFileSync('scores.json', JSON.stringify(scores, null, 2));

Le fichier contient toujours le tableau entier : charger les notes, en ajouter une, puis toutes les réécrire. Dans store.js, add est une méthode de l’objet store. Dans une méthode, this désigne l’objet lui-même, donc this.notes est le tableau du magasin. Passer directement le tableau provoque une erreur, car un fichier contient du texte.

challenge icon

Défi

Facile

Cette étape ouvre le projet préparé de l’outil de notes en ligne de commande du cours, plutôt que les fichiers de votre projet de l’étape Lire un fichier (y compris store.js). Votre travail précédent reste dans sa propre leçon. Lisez les fichiers fournis avant de modifier store.js. Cette copie contient l’outil de notes qui lit un fichier.

add oublie toujours la note lorsque le programme se termine. Faites en sorte qu’il enregistre chaque note dans notes.json, afin que list l’affiche à la prochaine exécution.

  1. Dans store.js, après que add a ajouté la nouvelle note au tableau, réécrivez tout le tableau dans notes.json au format JSON. Écrivez toutes les notes, pas seulement la nouvelle : l’écriture d’un fichier remplace tout son contenu. Indentez le JSON de deux espaces pour qu’il soit facile à lire dans Files.
  2. Dans notes.js, dans la branche add, remplacez la ligne qui affiche Adding: .... Elle affiche maintenant uniquement Saved note , le numéro de la nouvelle note et un point. Avec les deux notes que contient notes.json au départ, node notes.js add Buy bread affiche :
    Saved note 3.
    et notes.json contient alors :
    [
      "Buy milk",
      "Call Ada",
      "Buy bread"
    ]
  3. En l’absence de notes.json, add le crée. Après clear, node notes.js add Call Ada affiche Saved note 1., puis list affiche 1. Call Ada.

Essayez : saisissez add Buy bread dans la zone après $ node notes.js, puis appuyez sur Entrée. Vous voyez Saved note 3.. Saisissez list : Buy bread est maintenant la note 3, même s’il s’agit d’une nouvelle exécution. Ouvrez notes.json dans Files pour voir le tableau enregistré. Saisissez ensuite clear, qui supprime le fichier, puis add Call Ada : vous voyez Saved note 1..

Essayez vous-même

import { existsSync, readFileSync } from 'node:fs';

const file = 'notes.json';

const store = {
    notes: existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [],
    add(text) {
        this.notes.push(text);
        return this.notes.length;
    },
};

export default store;

Toutes les leçons de Les bases de Node.js

Entraînez-vous par vous-même : Playground Express