Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    26

    [JAVA] problemi sui file

    Per salvare gli oggetti sui file, come si deve fare per rendere serializzabile una classe...
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Basta che la classe che intendi salvare implementi l'interfaccia Serializable. E' un'interfaccia priva di metodi, serve solo a far attivare al compilatore Java il meccanismo di serializzazione.
    Esempietto:
    codice:
    public class MiaClasse implements Serializable {
       ...
    }
    Questa classe è serializzabile. Alcune classi implementano già di per se l'interfaccia Serializable... è il caso di String, Integer, Vector...


    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

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    26
    Lavoro proprio su un vector, ma mi dice che non è serializabile... non ci capisco una mazza. Ho messo seraizable sia la classe che ho fatto che la classe che ho inserito nel vector... ma continua a farmi le menate... help!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se posso darti un consiglio, evita di serializzare Vector. Dovrebbero già essere Serializable, da documentazione... comunque comportano qualche problema (almeno nella trasmissione via Socket).
    Se proprio vuoi salvare la lista di oggetti, trasformala in un array (è una baggianata) e salva l'array (o una classe che lo contiene).
    Ricostruire il Vector a partire dall'array è l'operazione inversa, che è altrettanto semplice.

    Prova a postare la classe che hai reso Serializable, in caso tu non intenda usare gli array...

    In ogni caso io ho sviluppato al volo queste classi che funzionano:
    Classe Prova.java (oggetto salvato nel Vector)
    codice:
    public class Prova implements Serializable {
    
       private String testo;
    
       public Prova(String testo) { this.testo = testo; }
       public void setText(String testo) { this.testo = testo; }
       public String getTesto() { return testo; }
    }
    Classe Salva.java (Si occupa di creare il Vector e salvarlo nel file)
    codice:
    import java.io.*;
    import java.util.*;
    
    public class Salva {
       public static void main(String [] args) throws Exception {
          Vector v = new Vector();
          ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream("Dati.dat") );
          for (int i=0; i<50; i++) {
             v.add( new Prova("Testo di indice " + i) );
          }
          oos.writeObject( v.clone() );
       }
    }
    Classe Apri.java (legge il file salvato e stampa il contenuto di ciascun oggetto nel vettore:
    codice:
    import java.io.*;
    import java.util.*;
    
    public class Apri {
       public static void main(String [] args) throws Exception {
          Vector v;
          ObjectInputStream ois = new ObjectInputStream( new FileInputStream("Dati.dat") );
          v = (Vector) ois.readObject();
          if (v != null) {
             for (int i=0; i<v.size(); i++) {
                System.out.println( ((Prova)v.elementAt(i)).getTesto() );
             }
          }
       }
    }
    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
    Registrato dal
    May 2004
    Messaggi
    26
    Grazie, ora ci do una occhiata e vedo se riesco a risolvere...

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