Rechercher un mot dans un fichier txt

Résolu
Signaler
Messages postés
93
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 janvier 2012
-
Messages postés
93
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 janvier 2012
-
Bonjour tout le monde,

J'essaie de voir si une partie de phrase se trouve dans un fichier txt, si tel est le cas, j'incrémente i de 1.

ça fonctionne très bien quand la phrase recherchée est présente dans le fichier txt et donc trouvée mais quand la phrase n'est pas dans le fichier txt, j'obtiens une erreur :

<!-- BEGIN TEMPLATE: bbcode_quote -->

Citation:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: 8
at java.lang.String.substring(String.java:1441)
at ExFile2.main(ExFile2.java:16)
Press any key to continue...

<!-- END TEMPLATE: bbcode_quote -->
Voici mon code :

<!-- BEGIN TEMPLATE: bbcode_code -->
import java.io.*;
publicclass ExFile2
{
publicstaticvoid main (String [] args)throws IOException
{
File f = new File ("c:\\bidon.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);

String ARechercher = "SET PATH";

String ligne ="";
int i=0;
while((ligne=br.readLine())!=null)
{
if(ligne.substring(0,8).equals(ARechercher))
{
i++;
}

}

System.out.println("i vaut "+i);

br.close();

}
}

Je vous remercie d'avance pour votre aide.

beegees

4 réponses

Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

pour rester dans l'esprit de ton code remplace :
if(ligne.substring(0,8).equals(ARechercher))

par :
if(ligne.indexOf(ARechercher) != -1)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
93
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 janvier 2012

Salut Twinuts,

Merci beaucoup pour ton aide très précieuse.

ça fonctionne.

Saurais-tu m'expliquez stp ?

C'est vraiment très gentil, merci encore.

beegees
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

c'est simple tu fais :
if(ligne.substring(0,8).equals(ARechercher))
or
ici rien ne te dit que la ligne à une taille de 8.... genre une ligne vide
... alors que indexOf test juste la présence de la chaine dans une
autre sans extraire une chaine....

PS:Merci de valider les réponses qui te débloque....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
93
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 janvier 2012

Salut,

Merci pour tout !

J'ai accepté ta réponse (désolé je ne suis pas encore habitué avec ce forum) et j'ai compris ton explication qui devrait m'aider pour le future.

Merci encore pour tout.

beegees