Advertisement
Guest User

Untitled

a guest
May 2nd, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.97 KB | None | 0 0
  1. public static double read(String sensorId) {
  2.     // on prend le chemin du fichier
  3.     Path path = FileSystems.getDefault().getPath(devicesPath, sensorId, valueFile);
  4.    
  5.     List<String> lines;
  6.  
  7.     // il y aura 3 essais au maximum
  8.     int attempts = 3;
  9.  
  10.     // cette variable sert à un contrôle d'intégrité basique
  11.     boolean crcOK = false;
  12.  
  13.     // tant que la tentative est inférieure à 3
  14.     while (attempts > 0) {
  15.         try {
  16.             // on lit toutles lignes du fichier
  17.             lines = Files.readAllLines(path);
  18.  
  19.             // pour chacune des lignes
  20.             for(String line: lines) {
  21.                 // si celle-ci se termine par "YES", le contrôle est bon
  22.                 if (line.endsWith("YES"))
  23.                     crcOK = true;
  24.                 // si la ligne correspond à un pattern qqch=des_chiffres ET que le contrôle d'intégrité est bon, on lit la valeur puis on la retourne
  25.                 else if (line.matches(".*t=[0-9]+") && crcOK)
  26.                     return Integer.valueOf(line.substring(line.indexOf("=")+1))/1000.0;
  27.             }
  28.             // gestion d'erreur basique
  29.             } catch (Exception e) {
  30.                 e.printStackTrace();
  31.             }
  32.         // on attend cette zone uniquement si le fichier n'est pas bon, donc on diminue les tentatives et on retente
  33.         attempts--;
  34.     }
  35.  
  36.     // en cas d'erreur complète, on renvoi une "valeur aberrante", donc le maximum de Double, soit, selon la documentation (2-2^-52)x2^1023
  37.     return Double.MAX_VALUE;
  38. }
  39.  
  40. public static List<String> list() {
  41.    
  42.     List<String> list = new ArrayList<String>();
  43.    
  44.     // on cherche à lire un "fichier" (soit un répertoire un ou fichier)
  45.     File searchPath = new File(devicesPath);
  46.  
  47.     // à priori, un répertoire : si le répertoire n'est pas vide
  48.     if (searchPath.listFiles()!=null) {
  49.  
  50.         // on parcourt tout les "fichiers" du répertoire
  51.         for (File f: searchPath.listFiles()) {
  52.  
  53.             // si le "fichier" est un répertoire et le nom ne commence par "w1_bus_master", on l'ajoute à la liste
  54.             if (f.isDirectory() && !f.getName().startsWith("w1_bus_master"))
  55.                 list.add(f.getName());
  56.         }
  57.     }
  58.  
  59.     // on retourne la liste
  60.     return list;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement