Chemin d'accès juste mais Scanner impossible
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.
Code:
filePath = "/soleil/logs/stats/"+ yyyy + "/" + mm + "/" + dd + "/" + yyyy + "-" + mm + "-" + dd + "_Resumes.txt"; //Chemin d'acces au fichier contenant les valeurs
Jusque la aucun problème n'est à déplorer le chemin d'accès est dans tous les cas juste.
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.
Code:
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]);
}
} |
Serait-ce du à l'environnement d'exécution du crontab? Etant donné que c'est le seul cas ou les applis ne fonctionnent pas.