Java problème de lire fichier

cs_kiosa Messages postés 1 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 16 juin 2008 - 16 juin 2008 à 13:23
 momay - 3 févr. 2013 à 00:17
Bonjour,
Je voudrais demander une aide sur l'ecriture/lecture dans un fichier ou la sérialisation
En fait j'ai eu une erreur dont je ne trouve pas de solution: l'erreur est ici:

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at elt_segment.carte.main(carte.java:212)

Et la partie où se fait la sérialisation:

try{
//ObjectOutputStream ecrire =new ObjectOutputStream (new FileOutputStream ("C:/Users/boulanger/Documents/fichier_carte.ser"));
String monFichier = "c:/chemin.txt";//Fichier qui contient les donées des capteurs via simulateur
RandomAccessFile raf = new RandomAccessFile(monFichier, "r");
String ligne=raf.readLine();//première ligne non considérée
ligne=raf.readLine();//Deuxième ligne non considérée
//ligne=raf.readLine();//On la traite
String lu;
try{
ObjectOutputStream ecrire =new ObjectOutputStream (new FileOutputStream ("C:/Users/boulanger/Documents/fichier_carte.dat"));
System.out.println("La carte a été lancé");
while(((lu=raf.readLine()))!=null){
String S_lue;
//lue=lu;
//////////////////////////////une ligne
p=tr.traite(lu);
double et=p.getetat();
String di=p.getDirection();
double dis=p.getDistance();
String cmp=p.getComportement();
double dirproc=tr.element(tr.tab_elt(lu),2);
double directionlue=tr.element(tr.tab_elt(lu),2);
double Etemp = et;
int j=0;
comp=(int)(tr.element(tr.tab_elt(lu),7));//comportement
///////////////////////////////une ligne
S_lue=raf.readLine();//la ligne suivante
p1=tr.traite(S_lue);
et=p1.getetat();//sauvegarde etat
//double dist=p1.getDistance();
//dis = dis + dist;
String d=p1.getDirection();
comp=(int)(tr.element(tr.tab_elt(S_lue),7));
//dirlu = prendreDirection(lu);
//dirproc=tr.element(tr.tab_elt(S_lue),2);//garder dir de la ligne lue
if(Etemp == et){

//String dirlu=raf.readLine();//passer à la suivante

if(!d.equals(di)){// penser à vérifier si ce n'est pas évitement d'obstacle
double lc =tr.element(tr.tab_elt(S_lue),7);
if(lc == tr.getevobst()){
lu=raf.readLine();
}
else{ // suppose un vrai chgt d'etat du au chgt de direction
//augmenter la distance
double dist=p1.getDistance();
dis = dis + dist;
// déterminer la relation topologique par rapport au sgt suivant
directionlue = tr.element(tr.tab_elt(S_lue),2);
p.setTOPO(directionlue, dirproc, j);
int comport=(int)(tr.element(tr.tab_elt(lu),7));
// incrémente le nombre de segments utile srt pr rel_topologique
p.setNumSeg();
//***********************************NEW******************************
p.setEtat(et);
p.setDirection(d);
p.setdistance(dis);
p.setcomportement(tr.lire_comportement(comport));
if(p!=null){
p.setNumSeg();
}
ca.ajoutesegment(p);
ca.ajoutesegment(new segment(2,"D22",5,"eo",2));
//ca.affiche();
//try{
//ObjectOutputStream ecrire =new ObjectOutputStream (new FileOutputStream ("C:/Users/boulanger/Documents/fichier_carte.dat"));
ecrire.writeObject (ca);
ecrire.flush();
ecrire.close ();
//}
//catch(IOException e){
//e.printStackTrace();
//}
//**********************//
//System.out.println("La carte a été lancé");

}//Fin else
}//fin if dir diff
}//Fin if mm etat
//////////////////////////////////////////////////
//try {
//ObjectOutputStream ecrire =new ObjectOutputStream (new FileOutputStream ("C:/Users/boulanger/Documents/fichier_carte.dat"));
//ecrire.writeObject (ca);
//ecrire.flush();
//ecrire.close ();
//::::::::::::::Fin ecriture-Début lecture fichier::::::::::::::::::::::
////FileInputStream ecrire1 = new FileInputStream("C:/Users/boulanger/Documents/fichier_carte.ser");
////ObjectInputStream ois = new ObjectInputStream(ecrire1);
////calect=(carte)ois.readObject();
////System.out.println("carte : ");
////System.out.println("carte : " + calect.liste_segment.size()+"\nLe nombre de sgt : \t"+ calect.Nseg());
////calect.affiche();i++;System.out.println("carte : "+ i);
//System.out.println("carte : ");
////ois.close();
////ecrire1.close();
/////////////////////////////////////////////////
di=d;
Etemp=et;
} //Fin while
FileInputStream ecrire1 = new FileInputStream("C:/Users/boulanger/Documents/fichier_carte.dat");
ObjectInputStream ois = new ObjectInputStream(ecrire1);
calect=(carte)ois.readObject();
System.out.println("carte : ");
//System.out.println("carte : " + calect.liste_segment.size()+"\nLe nombre de sgt : \t"+ calect.Nseg());
calect.affiche();i++;System.out.println("carte : "+ i);
//System.out.println("carte : ");
ois.close();
ecrire1.close();
} ////try de while
catch (java.io.IOException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}

Si quelqu'un a une proposition prière de me venir en aide.Merci

1 réponse

j'ai pas compris
0
Rejoignez-nous