EOFexception apres une lecture dans fichier.

Résolu
ObiWanKennedy Messages postés 60 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 29 octobre 2010 - 13 avril 2005 à 16:05
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 15 avril 2005 à 10:47
public void Initquizzstatic ()//init le vector static a la classe
{


Object temp = new Object();
int i;
String nom;
try
{

DataInputStream br = new DataInputStream(new BufferedInputStream(new FileInputStream("bddquestion.txt")));
String ligne;


i = 0;
ligne = br.readUTF ();
while (ligne != null) //tantque la ligne contient quelquechose
{

temp = InitCquestionqcm (ligne);//lis une ligne pour crée temp
nom = temp.getClass ().getName ();
if (nom.equals ("Cquestionopen"))
((Cquestionopen)temp).setido(i);
else
((Cquestionqcm)temp).setid(i);

Vquest.addElement(temp);//ajoute temp dans le vector

++i;
ligne = br.readUTF ();
}

br.close ();
}
catch (Exception e)
{
System.out.println(e.toString());
}
}

voila ceci lance une exception on pense que celà vient du fait qu'il ne ferme pas le fichier
donc bon sait pas trop Help
merci
I am a heap of shit to human appearance

9 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
15 avril 2005 à 10:47
ben, il suffit de déclarer le DataInputStream avant le bloc try.

En le mettant dans un bloc finally, on s'assure que ce soit toujours exécuter.

public void Initquizzstatic ()//init le vector static a la classe
{


Object temp = new Object();
int i;
String nom;


DataInputStream br =null;


try
{
br = new DataInputStream(new BufferedInputStream(new FileInputStream("bddquestion.txt")));


...

// ne pas faire le close ici

}
catch (Exception e)
{
System.out.println(e.toString());
} finally {

if(br!=null){

br.close();

}

}
3
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
13 avril 2005 à 17:19
Salut (ça fait pas de mal),



d'après la javadoc, cette exception est lancée si la fin de fichier est
détectée avant la lecture complète de la valeur. Donc est ce que le
fichier est correct ?
0
ObiWanKennedy Messages postés 60 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 29 octobre 2010 1
13 avril 2005 à 19:00
Salut, merci pour la reponse
le fichier est de la forme suivante.

q;Quelle est la capitale de la russie?;Bruxelles;Moscow;Paris;Kiev;Moscow;4;1;
o;raconter l'histoire de l'informatique.;4;2;
1er champs type de question q questionqcm o=question ouverte
2eme champs = la question
avant dernier champs point attribué a la question
dernier champs = le numero de chapitre de la kestion
et les autres chances c'est les reponses et la reponse vrai pour les question qcm.

enfaite en travaillant dessus on dirait qui ne trouve pas le null car c'est en binaire.
je pense. j'arrive pas comprendre pourquoi.

I am a heap of shit to human appearance.
0
bloofi Messages postés 388 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 3 mai 2006 2
13 avril 2005 à 20:41
EndOfFile Exeption

ca veut juste dire que tu as finis de lire le fichier et que tu peux le fermer (dans un catch par exemple)

0

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

Posez votre question
ObiWanKennedy Messages postés 60 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 29 octobre 2010 1
14 avril 2005 à 01:19
ben oui, je m'en doute que je peux le fermer mais le br.close(); sert a ça.
mais on dirait que cela le survole apres la sortie du while. très bizarres
enfin merci quand même je cherche.

I am a heap of shit to human appearance
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
14 avril 2005 à 10:26
à quel moment est lancé l'exception ?
0
ObiWanKennedy Messages postés 60 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 29 octobre 2010 1
14 avril 2005 à 10:43
Salut
enfaite l'exception est lancé dans le while ligne = br.readUTF ();
dans le while j'ai fait un bete traitement juste un affichage de la ligne. sa affiche bien toutes les lignes mais apres la derniere ligne ben sa lance l'exception. car le fichier est fini.
notre fichier fini par une ligne vide donc c'est pour ça que la condition du while c ligne != null mais j'ai l'impression qu'il ne la trouve pas la ligne null ou qu'il la code bizarrement et qui ne la reconnait pas en t'en que tels donc au final le while fait une boucle de trop qui fait lire une ligne qui n'existe pas donc cela lance l'exception.

le meme programme mais avec un readline(); marche super bien pas d'erreur rien mais comme c'est du binaire les caractère sont un peu spécial quoi.

voila merci.

I am a heap of shit to human appearance
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
14 avril 2005 à 11:17
Ca correspond donc à ce qu'il y a dans la javadoc. La lecture de la
dernière valeur échoue car il considère qu'elle est mal encodée et on
arrive à la fin du fichier.

Donc soit le fichier est corrigé pour éviter le plantage sur la
dernière ligne, soit on catche l'exception et on assume que c'est dû à
cette erreur.
0
ObiWanKennedy Messages postés 60 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 29 octobre 2010 1
14 avril 2005 à 20:36
catch (EOFException e)
{

}

avec ce catch je recupère l'erreur mais comment je fais pour lui dire de fermer le br parce que niveau des portées des données ça foire quoi.

I am a heap of shit to human appearance
0
Rejoignez-nous