Récupérer une valeur bien précise d'un fichier texte

sarah! Messages postés 57 Statut Membre -  
sarah! Messages postés 57 Statut Membre -
Bonjour à tous

Je suis en train de développer une petite application avec eclipse et j'aimerai récupérer certain valeur de mon fichier texte pour appliquer un traitement .

J'ai un fichier texte (capteur.txt) avec des valeur
Date Time Température °C
2013-11-01 00:00:00 15

récupérer seulement le 15 par exemple pour appliquer ensuite un traitement.

merci pour votre aide

sarah

2 réponses

  1. Doctor C Messages postés 630 Date d'inscription   Statut Membre Dernière intervention   400
     
    Pour lire un fichier texte ligne par ligne en Java:
    https://java.developpez.com/faq/javaio?page=Gestion-des-fichiers#LANGAGE_FICHIER_lireLigneParLigne

    Pour obtenir une chaîne de caractères dans une autre chaîne de caractères, la fonction
    substring()
    est bien si tu connais la taille de tes différents champs:
    http://www.tutorialspoint.com/java/java_string_substring.htm

    Bonne chance!
    1
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      On fait du Java, pas du C ;p

      Pour lire un fichier texte ligne par ligne, je conseillerais plutôt l'utilisation de la classe Scanner, les BufferedReader/readLine c'est très bas niveau... un peu comme les substring, on pourrait utiliser un split pour découper la ligne sur les espaces !

      Scanner sc = new Scanner(new File("capteur.txt");
      
      while (sc.hasNextLine())
      {
          String line = sc.nextLine();
          String[] datas = line.split("\\s");
      
          if (datas.length < 3)
          {
              System.err.println("Line with bad format : "+line);
              continue;
          }
      
          String date = datas[0];
          String time = datas[1];
          String temp = datas[2];
      
          // ...
      }
      
      sc.close();
      0
  2. sarah! Messages postés 57 Statut Membre 3
     
    Bonjour et merci pour votre réponse
    je débute en java est ce que vous pouvez me commenter le code SVP ,
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      C'est de l'anglais y a pas grand chose à commenter...

      Soit un scanner du fichier "capteur.txt", tant que le scanner a des lignes, mettre la ligne suivante dans line, découper la ligne* dans datas, si il y a moins de 3 données alors on affiche une erreur et on continue (on passe à la ligne suivante), sinon la date, le temps et la température sont respectivement le premier, deuxième et troisième morceaux des données.

      Je n'ai fait que paraphraser les mots anglais du code...

      * la seule difficulté c'est "\\s" qui représente un séparateur (un espace dans ton cas)
      0
    2. sarah! Messages postés 57 Statut Membre 3
       
      merci beaucoup au faite mon bute est a partir de mon fichier texte qui contient :

      Id_Cap_T Date de début L'heure_début L'heure_Fin Température
      010001 2013-12-18 00:00:00 01:00:00 15
      010001 2013-12-18 01:00:00 02:00:00 14
      010001 2013-12-18 02:00:00 03:00:00 13
      010001 2013-12-18 03:00:00 04:00:00 13
      010001 2013-12-18 04:00:00 05:00:00 12
      ... .... .... ..... .......

      010001 2013-12-18 23:00:00 00:00:00 15

      générer des données alétoire de la manière suivante :
      On suppose que le délai entre deux prises de mesures = 5 Secondes
      on parcourant mon fichier je teste la température
      si Température_début>Température_Fin ici c'est le cas 15>14 alors dans ce cas je démuni ma température un nombre alétoire pour générer des donnée chaque 5seconde jusqu'a atteindre le 14
      par exemple:

      010001 2013-12-18 00:00:00 15
      010001 2013-12-18 00:00:05 14.95
      010001 2013-12-18 00:00:10 14.83
      010001 2013-12-18 00:00:15 14.60
      ... .... .... ....
      010001 2013-12-18 00:00:55 14.20
      010001 2013-12-18 01:00:00 14

      sion si Température_début<Température_Fin j'ajoute une valeur alétoire ainsi de suite .
      j'espère j'étais claire cette fois-ci
      merci de votre aide
      0