<<no stack trace available>> après lecture d'un très gros fichier

Résolu
Sarah_tn Messages postés 5 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 11 janvier 2005 - 10 janv. 2005 à 15:31
jef_b Messages postés 28 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 2 juin 2005 - 11 janv. 2005 à 13:32
Bonjour à tous !!!
Désolée si le sujet est redondant, mais je n'ai pas trouvé mon bonheur dans le forum (et sur le net, évidement).
Voila mon problème :

Je dois parcourir un fichier à la recherche de mots clés, j'utilise donc un BufferedReader, le soucis est que lorsque je lance mon application, j'ai une belle erreur au bout de 40 secondes de recherche :

Exception in thread "main" java.lang.NullPointerException
<<no stack trace available>>

Je suppose que la taille de mon fichier en est la cause, environ 15 Millions de lignes (100mo)...
Je ne sais pas trop quoi faire, pouvez vous m'aider ?

import java.io.*;
import java.util.*;


public class LireFichierCASE{
public static void main(String[] args) throws IOException{
String nomFich = "unFichier.case";
String ligneLue = "";
BufferedReader entree = new BufferedReader( new FileReader(nomFich));


do{
ligneLue = entree.readLine();
StringTokenizer tok = new StringTokenizer(ligneLue, " ");
if(ligneLue.indexOf("bcc_dz") > 0)
{
System.out.println("Ligne lue : "+ligneLue);
}
}
while(ligneLue != null);
entree.close();
System.out.println("parcours du fichier terminé...");
}
}

Sarah

5 réponses

jef_b Messages postés 28 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 2 juin 2005
10 janv. 2005 à 16:09
Bonjour Sarah !



Je ne sais pas si c'est du à ça mais on ne sais jamais...

Si tu arrives à la fin de ton fichier, tu te retrouves avec ligneLue = null

Ensuite tu fais appel au constructeur de StringTokenizer(ligneLue) -> NullPointerException !!!!

je te propose donc de faire ton test de l'autre sens (ou comme tu as envie )



while((ligneLue =
entree.readLine())
!= null){

StringTokenizer tok = new StringTokenizer(ligneLue, " ");
if(ligneLue.indexOf("bcc_dz") > 0)
{
System.out.println("Ligne lue : "+ligneLue);
}
}



Bon, dans le cas que je te propose, on est sur que ça ne provient pas du new StringTokenizer ...



Tiens moi au courant !!




Jef
3
jef_b Messages postés 28 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 2 juin 2005
11 janv. 2005 à 09:02
Hello !

Je suis pas du tout sûr que ce soit cela, mais si certaines de tes occurences débutent les lignes, à mon avis c'est normal... Remplace ton > par >=

Ca peut être à cause de ça...

Bon courage pour la suite !
Jef
3
Sarah_tn Messages postés 5 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 11 janvier 2005
11 janv. 2005 à 07:37
Bonjour Jef !!!
Merci beaucoup pour ta réponse, elle répondait précisément à ma question :o)
L'erreur n'apparait plus, c'est déjà super, maintenant, il faut que j'arrive à comprendre pourquoi mon code ne trouve pas toutes les occurences du mot recherché Oo
est-il possible que le code ne parcours pas tout le fichier, malgrès que le prog m'affiche bien mon "parcours du fichier terminé..." ?

Merci beaucoup Jef, bonne continuation, et à bientot :o)

Sarah
0
Sarah_tn Messages postés 5 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 11 janvier 2005
11 janv. 2005 à 11:52
Bonjour Jef,
Merci beaucoup, tout fonctionne comme je veux :o)
Je reviendrai surement, mais merci encore.

Au plaisir.

Sarah
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jef_b Messages postés 28 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 2 juin 2005
11 janv. 2005 à 13:32
Pas de problème !



@bientôt peut être !

Jef
0