Exercice: Gestion des fichiers avec le module fs
Conditions d’achèvement
Exercice : "Carnet de Recettes"
Objectif : Créer un script Node.js qui permet à l'utilisateur de sauvegarder et de lire des recettes dans un carnet de recettes sous forme de fichier texte.
Partie 1: Écriture dans un fichier
-
Initialisation du projet :
- Créez un nouveau dossier nommé
recipe_book. - Ouvrez un terminal, naviguez (
cd) dans ce dossier.
- Créez un nouveau dossier nommé
-
Création du script d'écriture :
- Dans le dossier
recipe_book, créez un fichierwriteRecipe.js. - Écrivez un script qui utilise
fs.writeFilepour créer un nouveau fichier de recette ou ajouter une recette à un fichier existant.
const fs = require('fs'); const recipe = { title: 'Pancakes', ingredients: ['2 cups all-purpose flour', '2 tablespoons sugar', '2 teaspoons baking powder', '1 teaspoon salt', '2 eggs', '1 1/2 cups milk', '4 tablespoons butter'], instructions: 'Mix all the ingredients in a bowl and cook on a hot griddle.' }; fs.writeFile('recipes.txt', `${recipe.title}\n\nIngredients:\n${recipe.ingredients.join('\n')}\n\nInstructions:\n${recipe.instructions}\n\n`, { flag: 'a' }, err => { if (err) { console.error('Error writing to file', err); } else { console.log('Recipe saved!'); } }); - Dans le dossier
Partie 2: Lecture d'un fichier
-
Création du script de lecture :
- Créez un fichier
readRecipe.jsdans le même dossier. - Écrivez un script qui utilise
fs.readFilepour lire le contenu du fichierrecipes.txtet l'afficher dans la console.
const fs = require('fs'); fs.readFile('recipes.txt', 'utf8', (err, data) => { if (err) { console.error('Error reading file', err); return; } console.log(data); }); - Créez un fichier
Partie 3: Gestion des erreurs
- Testez la gestion des erreurs :
- Essayez de lire un fichier qui n'existe pas pour tester la gestion des erreurs.
- Assurez-vous que le script affiche un message d'erreur approprié sans arrêter l'exécution de manière inattendue.
Partie 4: Opérations asynchrones vs. synchrones
- Comparaison des opérations :
- Modifiez
readRecipe.jspour utiliserfs.readFileSyncet comparez le comportement avecfs.readFile. - Notez la différence dans l'exécution du code lors de l'utilisation de la version synchrone.
- Modifiez
Partie 5: Défi supplémentaire (Optionnel)
- Amélioration du carnet de recettes :
- Ajoutez la possibilité de passer le titre et les détails de la recette via la ligne de commande.
- Utilisez le module
readlineouprocess.argvpour collecter les entrées de l'utilisateur. - Ajoutez des fonctionnalités pour supprimer une recette ou rechercher une recette par titre.
Cet exercice permet aux apprenants de pratiquer la manipulation de fichiers, la gestion des erreurs et la distinction entre les opérations asynchrones et synchrones en Node.js.
Modifié le: mardi 7 novembre 2023, 09:50