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 :
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...
Voici mon code :
import java.io.*; public class ExFile2 { public static void 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(); } }
Merci d'avance pour votre aide.
beegees
Es-tu sur que l'erreur n'est pas du fait que la ligne testé fait moins de 8 (ou 9 plutôt?) caractère ?
Car l'erreur indiquer semble venir d'un problème avec l'utilisation de la fonction substring.
Donc dabors tester si la longueur de la ligne testée est >= à la longueur de la chaine recherchée
Bon y a sans doute plus propre mais ça devrait éviter de faire une erreur d'accès mémoire
Salut,
Merci pour ta réponse.
Le problème doit provenir de là.
Masi c'est quand même étrange car la ligne qui est vérifiée est supérieur à 8 caractères.
Est-ce qu'il ne vérifie pas une ligne blanche ?
En tout cas, je vais utiliser ton test, merci encore.
beegees
Bah affiche avant ton test chaque ligne (avec décoration pour répérer les lignes blanches) pour pouvoir vérifer le comportement de ton programme :wink: