Mon appli génère des graphiques et pour cela elle va lire dans des fichiers texte des valeurs permettant la génération. Le chemin d'accès est dynamique car il y a un fichier par jour.
Jusque la aucun problème n'est à déplorer le chemin d'accès est dans tous les cas juste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part filePath = "/soleil/logs/stats/"+ yyyy + "/" + mm + "/" + dd + "/" + yyyy + "-" + mm + "-" + dd + "_Resumes.txt"; //Chemin d'acces au fichier contenant les valeurs
Le problème se présente lorsque je veux lire le fichier avec un scanner. Lorsque je lance manuellement l'appli avec la commande java -cp /usr/local/rrdtool Graph... (ou ... est remplacé par 2Sem, 1Mois, 3Mois ou 1An) il n'y a aucun problème.
Mais ayant automatisé l'exécution des applis avec crontab, il semblerait que le scanner permettant de lire les fichiers ligne par ligne bug et ne veuille pas passer à la ligne suivante.
Serait-ce du à l'environnement d'exécution du crontab? Etant donné que c'est le seul cas ou les applis ne fonctionnent pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 try { Scanner scanner = new Scanner(new File(filePath)); System.out.println("SCANNER " + scanner.hasNext()); //J'obtiens false ici try { while (scanner.hasNextLine()) { System.out.println("WHILE"); String line = scanner.nextLine(); for (int j = 0; j < nbLignes; j++) { //Renseignement des differents tableaux if (line.contains(tabDepots[j]) && !line.contains("carnica")) { //Si la ligne contient la case du tableau line = line.replace(" ", ""); line = line.replace("|", " "); String tabline[] = line.split(" "); tabVal[j][JourJ] = Double.parseDouble(tabline[4]); tabFic[j][JourJ] = Integer.parseInt(tabline[7]); tabScaleFiles[j][JourJ] = tabFic[j][JourJ] + (10 - (tabFic[j][JourJ] % 10)); //On prend comme echelle un nombre superieur tabScaleData[j][JourJ] = (int)tabVal[j][JourJ] + (10 - ((int)tabVal[j][JourJ] % 10)); //On prend comme echelle un nombre superieur System.out.println("**********"); System.out.println("TABVAL-" + tabVal[j][JourJ]); System.out.println("TABFIC-" + tabFic[j][JourJ]); } } } } finally { // On s'assure de fermer proprement le fichier System.out.println("CLOSE SCANNER"); scanner.close(); } } catch (FileNotFoundException e) { //Affichage d'un message d'erreur spécifiant que le fichier n'a pas été trouvé System.err.println("(" + filePath + ") Fichier non trouvé initialisation des variables a 0"); for (int j = 0; j < nbLignes; j++) { //Mise à zéro des différents tableaux tabVal[j][JourJ] = 0; tabFic[j][JourJ] = 0; tabScaleFiles[j][JourJ] = 0; tabScaleData[j][JourJ] = 0; System.out.println("TABVAL-" + tabVal[j][JourJ]); System.out.println("TABFIC-" + tabFic[j][JourJ]); } }
Partager