Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225

    Stampa di un oggetto

    Ciao a tutti!

    Ho una classe PRODOTTO che ha questo metodo:

    public void visualizzaProdotto() {
    FileInputStream fis = null;
    ObjectInputStream is = null;
    try {
    fis = new FileInputStream("Prodotti.dat");
    is = new ObjectInputStream(fis);
    }
    catch (IOException e) {
    System.exit(3);
    }

    Prodotto p2 = null;
    try {
    p2 = (Prodotto) (is.readObject());
    is.close();
    }
    catch (IOException e) {
    System.exit(4);
    }
    catch (ClassNotFoundException e) {
    System.exit(5);
    }

    System.out.println(p2.getNome());

    }

    In teoria dovrebbe stamparmi il nome dell'oggetto prodotto che ho precedentemente salvato nel file Prodotti.dat, giusto?
    Ma non mi appare niente quando invoco questo metodo!
    Perchè?

    GRAZIE

  2. #2
    Vedi un po se così funziona..
    devi fare un ciclo che scorre i prodotti.
    [ CODE]
    public void visualizzaProdotto() {
    FileInputStream fis = null;
    ObjectInputStream is = null;
    try {
    fis = new FileInputStream("Prodotti.dat");
    is = new ObjectInputStream(fis);
    }
    catch (IOException e) {
    System.exit(3);
    }

    try {
    String prodotto = is.readLine();
    while(prodotto!=null)
    {
    Prodotto p2 = new Prodotto();
    prodotto= fIN.readLine();
    }
    is.close();
    }
    catch (IOException e) {
    System.exit(4);
    }

    System.out.println(p2.getNome());

    }
    [/ CODE]

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Grazie Sstellina ma...
    c'è un altro problema...!
    Mi dà errore questo metodo...forse è per questo che non mi visualizzava niente!

    CODICE:

    [ CODE]
    public void salvaProdotto(String codice, String nome) {
    FileOutputStream fos = null;
    try {
    fos = new FileOutputStream("Prodotti.dat", true);
    }
    catch(IOException e) {
    System.out.println("Errore creazione file");
    System.exit(1);
    }

    ObjectOutputStream os = null;

    Prodotto p = new Prodotto(codice, nome);
    try {
    os = new ObjectOutputStream(fos);
    os.writeObject(p);
    os.flush();
    os.close();
    }
    catch (IOException e) {
    System.out.println("Errore scrittura");
    System.exit(2);
    }
    }
    [/ CODE]

    Mi esce a exit(2)!!!
    Non capisco il perchè!
    Qualcuno può aiutarmi?
    Grazie!

  4. #4
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Innanzitutto all'iterno del catch fai una chiamata tipo e.printStackTrace() e poi se ne riparla...

    Cominciare a individuare la sorgente del malfunzionamento e' la prima cosa da fare, no ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Grazie...non conoscevo questo metodo!
    Vado a provare!
    Ciao ciao


  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Ecco cosa mi dice:


    java.io.NotSerializableException: ListArray
    at java.io.ObjectOutputStream.writeObject0(ObjectOutp utStream.java:1156)
    at java.io.ObjectOutputStream.defaultWriteFields(Obje ctOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeSerialData(ObjectO utputStream.java:1474)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Obj ectOutputStream.java:1392)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutp utStream.java:1150)
    at java.io.ObjectOutputStream.writeObject(ObjectOutpu tStream.java:326)
    at Prodotto.salvaProdotto(Prodotto.java:78)
    at PannelloProdotto.actionPerformed(PannelloProdotto. java:73)
    at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed (AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.jav a:6038)
    at javax.swing.JComponent.processMouseEvent(JComponen t.java:3260)
    at java.awt.Component.processEvent(Component.java:580 3)
    at java.awt.Container.processEvent(Container.java:205 8)
    at java.awt.Component.dispatchEventImpl(Component.jav a:4410)
    at java.awt.Container.dispatchEventImpl(Container.jav a:2116)
    at java.awt.Component.dispatchEvent(Component.java:42 40)
    at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.jav a:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429 )
    at java.awt.Component.dispatchEvent(Component.java:42 40)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java: 599)
    at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:121)



    Ha qualche problema con una lista ListArray????
    Qualcuno sa spiegarmi l'errore?
    GRAZIE MILLE!!!

  7. #7
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    E' necessario che il tipo sia un tipo serializzabile.
    Dovrebbe essere sufficiente dichiarare la classe come "estensione" dell'intefaccia Serializable (Ovvero dichiararla con: public class Prodotto implements Serializable)

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Esatto. Inoltre tutte le variabili interne devono essere serializzabili (oppure transient,se non vuoi che vangano salvate). Quindi anche la classe ListArray che hai scritto tu deve implementare Serializable.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Grazie mille!

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    225
    Ho aggiunto alla classe ListArray l'interfaccia Serializable...

    [ CODE]

    public class ListArray implements List implements Serializable {

    ..... }

    [/ CODE]

    ma il compilatore mi dà questo errore...proprio nella prima riga di codice dove implemento Serializable: '{' expected

    Che significa?
    GRAZIE

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.