Allora devo scrivere un loader e un saver di oggetti utenti su un file,per un programma di una gestione di una biblioteca. gli oggetti utenti hanno attributi utente,psw,prestito,libro1,libro2,libro3
se riesco a risolvere questo problema riesco a consegnare il progetto e passare l'esame, vi prego aiutatemi![]()
allego qua le classi
questo è il loader
import java.io.*;
public class Load {
public Load(){}
public void Caricalista(ListKey Lista) throws Exception{
Utente loaded,x;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream ("elenco.sav"));
while((loaded = (Utente)ois.readObject())!=null){
loaded = (Utente)ois.readObject();
System.out.println(loaded.nome);
Lista.insert(loaded);
x=Lista.head();
System.out.println(x.nome);}
ois.close();
}
}
Questo il Saver
import java.io.*;
public class Salva {
public Salva(){}
public void salva (Utente piero) throws IOException{
Load loader=new Load();
ListKey Lista=new ListKey();
try{ loader.Caricalista(Lista);
}catch (Exception e){System.out.println ("Errore in Salva.java");}
FileOutputStream fos = new FileOutputStream ("elenco.sav");
ObjectOutputStream oos = new ObjectOutputStream(fos);
Lista.insert(piero);
Utente test=new Utente();
int i;
for(i=0;i<Lista.lenght();i++){
Lista.scorri(test);
oos.writeObject(test);
}
oos.close();
}
}
public class ListKey extends ListNode {
public ListKey() {super();}
public ListKey (Utente o){super(o);}
public ListKey(Utente o, List l){super (o,l);}
public Utente find (String user){if (isEmpty())return null;
if (user.equals(head().nome)) return head();
return ((ListKey)tail()).find(user);
}
public Utente scorri(Utente prova){if (isEmpty()) return null;
else {prova=head();
return ((ListKey)tail()).scorri(prova);
}
}
}
e il main:
public class mainvia {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Utente prova=new Utente();
prova.nome="Tettone";
prova.psw="300786";
prova.LibriPrestito="SI";
prova.TitlePrestito1="IL Giovane Holden";
ListKey Lista=new ListKey();
Salva save=new Salva();
try {save.salva(prova);}catch(Exception e){}
Load loader=new Load();
try{loader.Caricalista(Lista);
}catch(Exception e){}
Utente x=new Utente();
System.out.println(x.nome);
}
}
Allora il problema è il segunete, se uso solamente il loader per aprire il file mi trova l'elemento,
se invece cerco di scrivere, quando nel Salva faccio
try{ loader.Caricalista(Lista);
}catch (Exception e){System.out.println ("Errore in Salva.java");}
a me va sempre in Errore Salva.java, come se nn riuscisse a fare da loader.
come posso risolvere?
l'idea di base è:
dal main passo per riferimento una ListKey Lista , carico dal file tutti i vari object che inserisco nella Lista, dopo di che faccio Lista.insert(Utente nuovo) cosi da avere la lista con tutti gli elementi che c'erano sul file piu l'utente nuovo che volevo inserire, poi con la funzione scorri di ListKey (CHE NON SO SE VA BENE) riscrivere tutti gli oggetti sul File.
dopo di che nel main ricarico di nuovo il file per controllo per vedere cosa è stato realmente scritto.

Rispondi quotando