Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Salvare e leggere da file oggetti

    Ciao a tutti,
    sono nuova del sito e sono anche una principiante di java :P! Volevo chiedere aiuto perchè non riesco a capire come fare a salvare e leggere oggetti da file...cioè i comandi so quali sono ma ho provato ad usarli e puntualmente il programma crasha con eccezioni di vario tipo :P
    Inserisco il codice che ho provato,se qualcuno può dirmi dove sbaglio ne sarei contentissima!
    Grazie in anticipo :P

    Questa è la funzione per scrivere,sia fos che out sono dichiarate all'inizio della classe, Prodotto è un'altra classe nel pacchetto,e implementa serializable

    codice:
    public void Scrivi(Prodotto[] nuovo) throws IOException
    {
    	
    	Prodotto[] temp= new Prodotto[2];
    	temp=nuovo;
    	
    	try{
    		
    		fos=new FileOutputStream("C:/Users/laura/magazzino1.bin",true);
    		out = new ObjectOutputStream(fos);
    		out.writeObject(temp);
    		out.flush();
    		out.close();
    		
    	}
    	
    	catch(IOException e)
    	{
    		System.out.println(" "+e);
    	}
    System.out.println("ho scritto");
    
    }
    Fino a qui penso che funzioni,mi visualizza "ho scritto" senza eccezioni: il problema nasce se ora provo a leggere(anche fin e ois li ho dichiarati all'inizio della classe):

    codice:
    public void Leggi() 
    	{
    	try{
            fin= new FileInputStream("C:/Users/laura/magazzino1.bin");	
    		ois=new ObjectInputStream(fin);
    		for(int i=0;i<2;i++)
    		prodotti[i]=(Prodotto)ois.readObject();
    		ois.close();
    		
    	}
    	catch(StreamCorruptedException e)
    	{
    		e.printStackTrace();
    		
    	}
    	catch(ClassCastException e)
    	{
    		e.printStackTrace();
    	}
    	
    	catch(Exception e)
    	{
    		e.printStackTrace();
    	}
    	
    	System.out.println("ho letto");
    	for(int i=0;i<prodotti.length;i++)
    		System.out.println("i prodotti sono "+prodotti[i].GetDescrizione());
    	}
    Il programma si blocca e nel debug di eclipse mi dice readObject(): line not availible
    e inoltre mi dice che il thread è sospeso per una streamcorruptedexception.
    qualcuno mi può aiutare?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Salvare e leggere da file oggetti

    Originariamente inviato da lally_fragola
    codice:
    fos=new FileOutputStream("C:/Users/laura/magazzino1.bin",true);
    out = new ObjectOutputStream(fos);
    La "serializzazione degli oggetti" non funziona in "append".

    http://forum.html.it/forum/showthrea...2#post12276752
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ah ecco :P!! ti ringrazio ora non mi dà più errore in readObject,ma ehm ho un altro problemino :P mi lancia una classcastexception, ovvero sulla console mi dà

    ho scritto
    ho letto
    java.lang.ClassCastException: [Lesame.Prodotto; cannot be cast to esame.Prodotto
    at esame.Magazzino.Leggi(Magazzino.java:60)
    at esame.Test.<init>(Test.java:16)
    at esame.Test.main(Test.java:21)

    da cosa può dipendere l'errore di casting? Ho dichiarato nella classe una variabile di tipo Prodotto(che è una classe diversa ma dello stesso pacchetto) quindi pensavo di poter fare il cast :P
    Sai cosa sbaglio?
    Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Come da Regolamento interno, al punto 6: quando si posta del codice, esso deve essere indentato e posto all'interno degli appositi tag CODE. Al punto 6 del regolamento linkato c'è anche un esempio di utilizzo.


    Sistemo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lally_fragola
    da cosa può dipendere l'errore di casting? Ho dichiarato nella classe una variabile di tipo Prodotto(che è una classe diversa ma dello stesso pacchetto) quindi pensavo di poter fare il cast :P
    Hai serializzato un array Prodotto[]. E quindi dovrai rileggere un oggetto Prodotto[] (poi accederai ai Prodotto che vuoi nell'array).
    Non puoi pensare di rileggere 1 Prodotto per volta. Non c'è solo quello ... c'è l'array. Non è la stessa cosa.
    Se serializzavi 1 Prodotto per volta, allora potevi rileggere (e fare il cast) 1 Prodotto per volta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Funziona !!!!
    Grazie mille,ci stavo impazzendo :P!!
    Ps chiedo scusa per il codice male inserito,la prosisma volta lo metto per bene :P

    Grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.