Récupération d'un champ dans un fichier
Résolu
remousse
Messages postés
299
Date d'inscription
Statut
Membre
Dernière intervention
-
ajp55 Messages postés 482 Statut Membre -
ajp55 Messages postés 482 Statut Membre -
Bonjour,
J'ai un fichier dans lequel le mot VALEUR peut être présent plusieurs fois.
Ce que je veux faire c'est récupérer les 34 caractères situés après le deuxième champ VALEUR rencontré.
J'ai fait ce bout de code mais cela ne fonctionne pas.
Pouvez-vous m'éclairer ?
J'ai un fichier dans lequel le mot VALEUR peut être présent plusieurs fois.
Ce que je veux faire c'est récupérer les 34 caractères situés après le deuxième champ VALEUR rencontré.
J'ai fait ce bout de code mais cela ne fonctionne pas.
Pouvez-vous m'éclairer ?
for (File fic : lst){
try{
System.out.println("Fichier en cours de traitement : " + fic.getName());
String line;
String champ;
int champCount = 0 ;
BufferedReader br = new BufferedReader(new FileReader(fic));
while ((line = br.readLine()) != null)
{
int startF = 0;
if ( line.indexOf("VALEUR") != -1){
champCount++;
System.out.println("VALEUR n°" + champCount);
startF = line.indexOf("VALEUR");
System.out.println("Index de début" + startF);
}
if (champCount == 2){
System.out.println("VALEUR 2 OK");
champ = line.substring(startF, startF + 34);
FileUtils.write(outputPath,resultFile, champ);
}
}
br.close();
}
catch(FileNotFoundException exc) {
System.out.println("File not found" );
}
catch(IOException ioe) {
System.out.println("Erreur IO" );
}
}
7 réponses
-
je comprend pas ton code, tu a plusieurs fichiers dans lequel tu veux chercher le mot VALEUR ou t'a un seul fichier. Si t'a un seul fichier, a quoi te sert le
for (File fic : lst) lst est-il un tableau ou vector de File ?
-
En effet, j'ai plusieurs fichiers et dans chaque fichier je veux récupérer les 34 caractères après la deuxième occurrence de la chaine VALEUR.
-
c'est quoi ça
FileUtils.write(outputPath,resultFile, champ);
et la signifacation des variables?
-
C'est une méthode que j'utilise pour sauvegarder le champ que j'ai récupérer ça n'a rien à voir avec la lecture de mon fichier.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Un peu d'expressions régulières peut-être ?
for (File fic : lst) { Scanner sc = new Scanner(fic); sc.findWithinHorizon("VALEUR",0); String s = sc.findWithinHorizon("VALEUR[\\x00-\\xffff]{34}",0); sc.close(); System.out.println(s==null ? null : s.substring(6)); }La confiance n'exclut pas le contrôle -
aulieu d'utiliser ton FileUtils, déclare une ouputfile avant d'entrer dans ta boucle de for
PrintWriter outputfile = new PrintWriter(new FileWriter(filename));
et a chaque lecture fait un print dans le outputfileoutputfile.print(champ);
, dc à la place de FileUtils, use ouputfile.print..... -
Je suis passé par une autre méthode merci de votre aide.