Médiaforma

All posts tagged écriture

En utilisant Notepad++, créez le fichier compteur.txt et sauvegardez-le sans aucun contenu.

Ecrivez quelques lignes de PHP pour créer un compteur de visite.

Solution

Faites une pause dans la vidéo et écrivez le code demandé dans l’exercice. Reprenez la lecture de la vidéo pour prendre connaissance de la solution de l’exercice.

Voici le code utilisé.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Compteur de visite</title>
  </head>
  <body>
    <?php
      $handle=fopen("compteur.txt","r+");
      $visites = fgets($handle);
      echo "Cette page a été visitée $visites fois.";
      $visites++;
      fseek($handle, 0);
      fputs($handle, $visites);
      fclose($handle);
    ?>
  </body>
</html>

Le fichier est ouvert en mode r+ avec la fonction fopen. Le handle du fichier est stocké dans la variable $handle.

La première (et unique) liogne du fichier est lue avec la fonction fgets et stockée dans la variable $visites.

Le nombre de visites de la page est alors affiché avec une instruction echo.

Le nombre de visites est incrémenté. Le pointeur d’écriture est placé au début du fichier avec la fonction fseek à laquelle on passe la valeur 0.

La nouvelle valeur du compteur de visite est stockée dans le fichier avec la fonction fputs puis le fichier est fermé avec la fonction fclose.

Exécutons ce code avec Wamp server.

La page n’a encore jamais été visitée. Appuyons sur la touche F5 pour réactualiser la page. Le compteur est incrémenté d’un : la page a été visitée une fois.

 


Pour écrire des données dans un fichier PHP, vous utiliserez la fonction fputs() :

fputs($handle, texte);

Où $handle est le handle du fichier retourné par la fonction fopen() et texte est le texte à écrire dans le fichier.

Si vous ouvrez le fichier en mode a ou a+, les données sont écrites à la fin du fichier, après les (éventuelles) données existantes. Si vous ouvrez le fichier en mode r+, les données sont écrites à l’emplacement spécifié par la fonction fseek() :

fseek($handle, position);

Où position est la position d’écriture (en caractères, à partir de 0). Si des données sont présentes à cette position, elles sont écrasées par les nouvelles données.


Pour lire et écrire dans un fichier texte, on utilise généralement des objets de classe BufferedReader et BufferedWriter. Ces types d’accès sont en effet bien plus performants que les précédents.

Voici un exemple de code. Tout comme dans l’exemple précédent, le fichier source.txt est copié dans le fichier destin.txt, mais ici, la copie est bien plus rapide :

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
public class bisBos {
  public static void main(String[] args) {
    try {
      FileInputStream fis = new FileInputStream(new File("source.txt"));
      BufferedInputStream bis = new BufferedInputStream(fis);
      FileOutputStream fos = new FileOutputStream(new File("destin.txt"));
      BufferedOutputStream bos = new BufferedOutputStream(fos);
      int data;
      while ((data = bis.read()) >= 0)
        bos.write(data);
      bis.close();
      bos.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}