Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [JAVA] Salvare un oggetto in un file

    Salve a tutti,

    ho un quesito un pò particolare da chiedervi,
    ho la necessità di salvare in un file un oggetto settato durante l'esecuzione di un piccolo programma.
    Secondo prblema, ipotizzando di port salvare questo oggetto e possibile riprenderlo in un secondo momento ??????

    Facciamo un esempio: ho la classe Impiegato, non i metodi set e get x il nome e il cognome.
    Setto sia il nome che il cognome x un'istanza di Impiegato.

    Vorrei salvare questa istanza in un file, con la possibilità di poter in un secondo tempo, riprendere quell specifica istanza.

    Grazie
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  2. #2
    La cosa è fattibile e anche molto semplice.
    Prima di tutto la tua classe impiegato deve implementare la classe Serializable (che non ha metodi da implementare).
    Fatto questo nel punto dove ti interessa salvare il tuo oggetto impiegato in un file utilizzi questa parte di codice

    codice:
    //Salva i dati della nel file specificato
        public void salvaRub(String nomeFile){
                ObjectOutputStream oss;
                try{
                    oss = new ObjectOutputStream(new FileOutputStream(nomeFile));
                    oss.writeObject(rubrica);
                    oss.close();
                }
                catch(Exception e){
                    //messaggio di errore
                }
        }
    Quando invece vuoi caricare da file un oggetto devi usare questo codice

    codice:
    //Carica i dati della rubrica dal file specificato
        public void apriRub(String nomeFile){
            rubrica = new Vector();
            ObjectInputStream ois;
            try{
                ois = new ObjectInputStream(new FileInputStream(nomeFile));
                rubrica = (Vector) ois.readObject();
            }
            catch(Exception e){
                    //messaggio di errore
            }
        }
    Io in questo esempio lo usavo per salvare e caricare una rubrica che era un tipo vector tu ovviamento lo devi adattare per il tuo oggetto impiegato.

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  3. #3
    Grazie.......mi ha ridotto di molto il lavoro


    a buon render......
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  4. #4
    Di nulla!

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    Ricordo che ora per Java c'è un forum apposito.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Ciao ....


    quando implemento il metodo di ritorno, mi da sempre che l'oggetto è null, ma il file lo crea regolarmente.....

    Come posso fare !!!
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  7. #7
    In che senso?

    Posta un po' il codice che hai scritto... :master:
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  8. #8
    Allora

    l'oggetto che estende Serializable si chiama VettoreSave, che non è ha altro che un vettore in cui vengono aggiunti altri oggetti, tipo HashMap o stringhe.

    poi ho creato una classe di utilità con il seguente metodo :

    private VettoreSave vetSave;

    public VettoreSave apriVettore(String nomeFile){

    vetSave = new VettoreSave();

    ObjectInputStream ois;
    try{
    ois = new ObjectInputStream(new FileInputStream("./file.brm"));
    vetSave = (VettoreSave) ois.readObject();

    ois.close();
    return vetSave;
    }
    catch(Exception e){

    return null;
    //messaggio di errore
    }
    }

    Mentre il metodo che salva l'oggetto nel file è il seguente :

    public void salvaVettore(String nomeFile, VettoreSave vetSav){

    this.vetSave = vetSave;
    HashMap mappa = (HashMap)vetSav.get(0);
    ObjectOutputStream oss;
    try{
    oss = new ObjectOutputStream(new FileOutputStream(nomeFile));
    oss.writeObject(vetSave);
    oss.close();
    }
    catch(Exception e){
    //messaggio di errore
    }

    }

    Quando salvo il file, il file viene creato anche se le sue dimensioni sono davvero piccolo : 1KB

    Grazie
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Io mi auguro che quando crei il file, il suo nome sia "file.brm" che il percorso sia lo stesso della tua applicazione, dato che nel metodo apriVettore() passi il nome del file, ma utilizzi sempre e comunque un file fisso.

    Se così non è, allora è probabile che non esiste un file chiamato "file.brm" nella directory dell'applicazione e ciò conduce all'eccezione che fa ritornare il null.


    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

  10. #10
    Faccio riferimento sepre allo stesso file, infatti ecco il codice che richiama il metodo:

    if(estensione.equals("brm")){
    UtilSave utilSave = new UtilSave();
    VettoreSave vetSav = utilSave.apriVettore("./file.brm");
    }


    Il mio dubbio è nella creazione del file, è possbille che abbia solo 1KB di dati serializzati ????
    Al momento del salvataggio l'oggetto vetSav contiene al suo interno un'HashMap con 9 oggetti.
    Gli oggetti che sono contenuti nell'HashMap sono degli oggetti che ho costruito io, devo implementare sempre l'interfaccia Serializable !!!!

    credo che sia quello il problema........lo spero
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

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 © 2024 vBulletin Solutions, Inc. All rights reserved.