NodeJs:FS Module

fsmodule permet d'interagir avec le système de fichiers avec les deux modes synchone et asynchrone,avec la différence entre les deux modes c'est que les fonctions asynchronous ne bloquent pas l'exécution des programme pendant l'exéuctions de ces méthodes
  1. readFile()
  2. writeFile()
  3. readFileSync()
  4. writeFileSync()
  5. ...

writeFileSync

cette fonction est synchrome donc nodejs attend la fin de l'exéction de cette fonction avec de poursuivre son exécution

Seveur.js

const express = require('express');
const app = express();
// Importer fs module
const fs = require('fs');

 
app.get('/text', (req, res) => {
let info = "le contenu du fichier text \n 1.bonjour \n 2.hello"
           +"\n 3.Thank you";
fs.writeFileSync("monFichier.txt", info);
  res.send(info)
});


app.get('/html', (req, res) => {
let html = "<html>"
+"<head><title>Fichier exemple</title>"
+"</head>"
+"<body>"
+"<h1>Le contenu</h1>"
+"</body>"
+"</html>";
fs.writeFileSync("htmlFichier.html", html);
  res.send(html)
});

app.listen(8081);

ReadFileSync

Seveur.js

const express = require('express');
const app = express();
// Importer fs module
const fs = require('fs');


//lire le fichier mon fichier
 
app.get('/lire', (req, res) => {
const data = fs.readFileSync('./monfichier.txt',
            {encoding:'utf8', flag:'r'});
res.send(data)
});

 
app.listen(8081);

writeFile

Cette méthode est asynchrone

Seveur.js

const express = require('express');
const app = express();
// Importer fs module
const fs = require('fs');



 app.get('/writeAsync', (req, res) => {
 let data = "Text to write";
fs.writeFile("fichier.txt", data, (err) => {
  if (err)
 res.send(err)
  else {
   res.send("Bien ajouté")
  }
});
});
app.listen(8081);

Exemple 2
1. Mise à jour du serveur avec Express.js (app.js):

const express = require('express');
const fs = require('fs').promises;
const path = require('path'); // Module pour gérer les chemins de fichiers
const app = express();
const port = 3000;

app.use(express.json());
app.use(express.urlencoded({ extended: true })); // Middleware pour analyser les données du formulaire

// Route pour afficher la page HTML avec le formulaire
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'index.html'));
});

// Route pour lire le contenu d'un fichier
app.post('/lire-fichier', async (req, res) => {
  const nomFichier = req.body.nomFichier;
  
  try {
    const contenuFichier = await fs.readFile(nomFichier, 'utf-8');
    res.json({ contenuFichier });
  } catch (error) {
    res.status(404).json({ erreur: `Le fichier ${nomFichier} n'a pas pu être lu.` });
  }
});

// Route pour écrire le contenu dans un fichier
app.post('/ecrire-fichier', async (req, res) => {
  const nomFichier = req.body.nomFichier;
  const contenu = req.body.contenu;

  try {
    await fs.writeFile(nomFichier, contenu);
    res.json({ message: `Le fichier ${nomFichier} a été écrit avec succès.` });
  } catch (error) {
    res.status(500).json({ erreur: `Une erreur est survenue lors de l'écriture du fichier ${nomFichier}.` });
  }
});

app.listen(port, () => {
  console.log(`Serveur en cours d'exécution sur http://localhost:${port}`);
});
2. Ajout d'une page HTML (index.html):


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Lecture et écriture de fichiers</title>
</head>
<body>
  <h1>Lecture et écriture de fichiers</h1>

  <!-- Formulaire pour sélectionner un fichier à lire -->
  <form action="/lire-fichier" method="post">
    <label for="nomFichierLecture">Nom du fichier à lire :</label>
    <input type="text" id="nomFichierLecture" name="nomFichier" required>
    <button type="submit">Lire le fichier</button>
  </form>

  <br>

  <!-- Formulaire pour sélectionner un fichier à écrire -->
  <form action="/ecrire-fichier" method="post">
    <label for="nomFichierEcriture">Nom du fichier à écrire :</label>
    <input type="text" id="nomFichierEcriture" name="nomFichier" required>
    <label for="contenuFichier">Contenu du fichier :</label>
    <textarea id="contenuFichier" name="contenu" rows="4" required></textarea>
    <button type="submit">Écrire dans le fichier</button>
  </form>
</body>
</html>








Cours et TPs