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

    Serializzazione Arraylist

    Ciao a tutti ho un problema con la serializzazione di un arraylist, non riesco a capire il problema, quando compilo mi da il problema di scrittura...qualche idea? grazie in anticipo
    codice:
    package serializzazionearraylist;
    
    import java.io.*;
    import java.util.ArrayList;
    
    /**
     *
     * @author giuakgiuan
     */
    public class SerializzazioneArrayList {
    
        private final static long serialVersionUID=1L;
        public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
            ArrayList<Oggetto> list= new ArrayList<Oggetto>();
            ObjectOutputStream oo = null;
            list.add(new Oggetto("sara"));
             try{
                 oo=new ObjectOutputStream(new  FileOutputStream("outbox.ser"));
             }catch(FileNotFoundException e){
                 System.out.println("File non trovato!");
             }catch(IOException ioe){
                 System.out.println("Errore di input/output");
             }
            try{                     
                 oo.writeObject(list);
             }catch(IOException e1)
             {
                 System.out.println("Errore di scrittura");
            }
        }
    
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Oggetto è serializzabile?
    RTFM Read That F*** Manual!!!

  3. #3
    questo è l'oggetto
    codice:
    package serializzazionearraylist;
    
    public class Oggetto {
        private static final long serialVersionUID=1;
        public String variabile;           
        public Oggetto(String x)
        {
            variabile=x;
        }
        
        }

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da jonnykaraoke
    questo è l'oggetto
    codice:
    package serializzazionearraylist;
    
    public class Oggetto {
        private static final long serialVersionUID=1;
        public String variabile;           
        public Oggetto(String x)
        {
            variabile=x;
        }
        
        }
    Non implementi Serializable...

    Originariamente inviato da jonnykaraoke
    quando compilo mi da il problema di scrittura...qualche idea?
    Usa la terminologia corretta: compilando, al massimo ottieni un errore di compilazione.. Un errore di scrittura (quale? avrai lo stack trace, dovresti postarlo...) lo hai a runtime
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    ti ringrazio adesso funziona il programmino di prova, però implementando la serializzazione in un programma più complesso questo non funziona...non trovo l'errore, vi posto l'oggetto e il codice che de/seriallizza
    Oggetto
    codice:
     
    package eventapp;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Serializable;
    import java.util.ArrayList;
    
    
    public class Evento implements Serializable{
        private static final long serialVersionUID=1;
        private String titolo;
        private String logo;
        private Sede sede;
        private Programma programma;
        private ArrayList<Organizzatore> organizzatori;
        private Organizzatore myorganizzatore;
        
        BufferedReader bufferRead;
        private String scelta;
        public  Evento setEvento() throws IOException{
            System.out.println("Inserire il titolo del nuovo Evento");
            bufferRead = new BufferedReader(new InputStreamReader(System.in));
            titolo = bufferRead.readLine();
            System.out.println("Inserire il pathfile del logo del nuovo Evento");
            bufferRead = new BufferedReader(new InputStreamReader(System.in));
            logo = bufferRead.readLine();
            
            return this;
        };
    
        public Evento() throws IOException{
            setEvento();
            sede=new Sede();
            sede.setSede();
            myorganizzatore=new Organizzatore();
            programma=new Programma();
            organizzatori=new ArrayList<Organizzatore>();
            while(!"n".equals(scelta))
            {
                myorganizzatore.setOrganizzatore();
                organizzatori.add(myorganizzatore);
                System.out.println("Inserire un nuovo organizzatore?");
                bufferRead = new BufferedReader(new InputStreamReader(System.in));
                scelta = bufferRead.readLine();
            }
            programma.setProgramma();
            
        }       
    }
    codice che gestisce la serializzazione
    codice:
     
    package eventapp;
    
    import java.io.*;
    import java.util.ArrayList;
    
    public class ListEventi implements Serializable{
        private final static long serialVersionUID=1L;
        private ObjectInputStream input;
        private ObjectOutputStream output;
        private ArrayList<Evento> ArrayEventi;
        private Evento evento;
        public ListEventi() throws IOException{
            input=null;
            output=null;
            ArrayEventi=new ArrayList<Evento>();        
            
        } 
    
        public void readFileDat() throws IOException{
            try{
                
                input=new ObjectInputStream(new FileInputStream("dati.dat"));
            }catch(FileNotFoundException e){
                System.out.println("File dati.dat non trovato,Creazione");
                ObjectOutputStream tempOutput=new ObjectOutputStream(new FileOutputStream("dati.dat"));
                
            }catch(IOException ioe){
                System.out.println("Errore di comunicazione 01");
            }
            try{
                
                ArrayEventi=(ArrayList<Evento>)input.readObject();
            }catch(IOException e1){
                System.out.println("Errore comunicazione 02");
            }catch(ClassNotFoundException e1){
                System.out.println("Oggetto non trovato");   
            }
            System.out.println("Lettura Eventi Completata,si controlli eventuali errori");
        }
        public void writeFileDat(){
            try{
                output=new ObjectOutputStream(new FileOutputStream("dati.dat"));
            }catch(FileNotFoundException e){
                System.out.println("File non trovato, o impossibile da scrivere");
            }catch(IOException ioe){
                System.out.println("Errore comunicazione 03");
            }
            try{
                output.writeObject(ArrayEventi);            
            }catch(IOException e1){
                System.out.println("Errore comunicazione 04");
            }
            try{
                output.close();
            }catch(IOException e2){
                System.out.println("Errore comunicazione 05");
            }
            System.out.println("Salvataggio Completato");
        }
        public void addEvento(){
            ArrayEventi.add(evento);
            writeFileDat();
        }
        public void removeEvento(Evento arg){
            int index=ArrayEventi.indexOf(arg);
            ArrayEventi.remove(index);
            writeFileDat();
        }
    }
    nel Main:
    codice:
     
        public static void readDeseriezableObj() throws IOException{
            ListEventi listEventi=new ListEventi();
            listEventi.readFileDat();
        }

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

    Moderazione

    Originariamente inviato da jonnykaraoke
    in un programma più complesso questo non funziona...non trovo l'errore
    Magari potresti cominciare con il postare l'errore che ottieni...

    Ad ogni modo, da una prima occhiata, vedo questo

    codice:
    public class Evento implements Serializable {
       ...
       private Programma programma;
       ...
    Questo codice mi fa presumere che tu voglia serializzare oggetti di tipo "Evento".

    La classe Programma è serializzabile?
    Il concetto è: per poter serializzare un oggetto, tutti i suoi campi devono essere serializzabili o marcati come transient.

    Rimaniamo sempre in attesa di conoscere l'errore... è essenziale fornire tutti i dettagli utili, se si vuole essere aiutati.


    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

  7. #7
    Prima di tutto (un consiglio) cerca di chiarirti bene il concetto di cosa è la Serializzazione e di quando un oggetto e' serializzabile.
    E' ovvio che la serializzazione dell'oggetto Evento non vada a finire bene in quanto le sue proprietà non sono serializzabili come per esempio BufferedReader.
    Ti ricordo, o forse meglio ti spiego, che un oggetto è serializzabile quando implementa Serializzable e quando tutte le sue proprietà (valorizzate, cioè nn null) sono serializzabili.

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Aggiungo: un campo può essere dichiarato transient in modo che venga "skippato" durante la serializzazione.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.