Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Io non ho mai detto che non sia possibile recuperare le informazioni da un file di testo per poi ricostruire una classe...
    Ho detto semplicemente che potresti fare prima salvando direttamente l'oggetto, al posto di salvarne tutti gli attributi.

    Quello che devi chiederti è:
    "devo salvare in un file di testo tutti gli attributi del mio oggetto Libro (titolo, autore, costo...) perchè devo riuscire a leggerli con un editor di testo... oppure posso semplicemente dire a Java «salvami un oggetto Libro e poi, quando mi serve, recuperamelo»?"

    Se la risposta fosse la prima, allora ok, salva tutti gli attributi inun file di testo e quando devi recuperarli, rileggili e ricostruisci l'oggetto, altrimenti non vedo perchè fare questa fatica...

    Puoi semplicemente salvare un oggetto di tipo Libro in un file (bytecode) e in futuro, CON UNA SOLA LETTURA, recuperarlo.


    Il codice non l'ho provato, ma sembra che vada bene.

    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

  2. #12
    Scusa, ma a quanto pare avevo capito male.
    La domanda che io volevo fare era proprio "salvarmi un oggetto Libro e poi, quando mi serve, recuperamelo". In principio, in realtà pensavo di dover salvare campo per campo ma poi, da questo forum e anche grazie a te, ho capito che era meglio salvare tutto l'oggetto.
    Perdonatemi ma sono solo un novello di Java e ancora per certi concetti faccio fatica.
    Comunque grazie a tutti quelli che hanno contribuito.

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  3. #13
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Scusate se ritiro fuori un 3d vecchio di un paio di giorni, ma il mio problema è simile a quello di miticogilles, solo che io voglio (vorrei... )fare in modo che ogni volta venga premuto un pulsante sia aperto un file (seempre lo stesso) ed ALLA FINE di questo sia scritto un nuovo oggetto.
    Inoltre poi devo leggere dal file uno ad uno i singoli oggetti.
    Sono giorni che ci sbatto la testa,mi date una mano?
    Grazie
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #14
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il metodo più semplice dal punto di vista concettuale credo sia questo:
    Il primo oggetto che salvi nel file è un Integer che ti indica quanti oggetti sono salvati nel file.
    Poi, via via, salvi tutti gli oggetti nel file.

    A questo punto, quando apri il file ed effettui la prima lettura, sai che il primo oggetto che leggi è un Integer e automaticamente sai anche quanti oggetti sono contenuti nel file.

    L'aggiornamento è semplice; supponiamo che ci siano n oggetti salvati nel file. La prima lettura ti dice che ce ne sono n, incrementi questo n di 1. Leggi tutti gli n oggetti e li salvi in un buffer (un array o un Vector), aggiungi al buffer il nuovo elemento, quindi risalvi tutto nel file.

    Ora veniamo al codice (supponiamo siano oggetti di tipo Oggetto):
    codice:
    FileInputStream fis = new FileInputStream(nomefile);
    ObjectInputStream ois = new ObjectInputStream(fis);
    
    // Mi informo: quanti oggetti sono salvati?
    int numoggetti = ((Integer) ois.readObject()).intValue();
    
    // Li leggo tutti e li metto in un Vector
    Vector v = new Vector();
    for (int i=0; i<numoggetti; i++) v.add((Oggetto) ois.readObject());
    
    // Ne voglio aggiungere uno
    v.add( new Oggetto() );
    
    // Chiudo il file
    ois.close();
    
    // Aggiorno il contatore di oggetti e ricreo il file.
    numoggetti++;
    FileOutputStream fos = new FileOutputStream(nomefile);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject( new Integer(numoggetti) ); // è importante: deve essere un oggetto Integer non un int
    for (int i=0; i<numoggetti; i++) oos.writeObject((Oggetto) v.elementAt(i));
    
    // Chiudo il file
    oos.close();
    Spero sia abbastanza chiaro e spero, soprattutto, ti sia d'aiuto.

    Se hai in mente altre soluzioni, postamele, ne discutiamo insieme (sono sempre alla ricerca della soluzione più performante e al contempo semplice).


    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. #15
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Grazie mille il tuo metodo è perfetto.
    Ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

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.