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

    JAVA salva/Carica file di testo

    Ciao a tutti, ho bisogno di una mano nel salva/carica di un file di testo.
    Però devo salvare/caricare un array di Libri, così dichiarato:

    codice:
    public class Book {	public String Titolo;
    	public String Autore;
    	public String Anno;
    	public String Percorso;
    	public String numpag;
    	public String formato;
    	
    	public Book(String Titolo, String Autore, String Anno, String Percorso, String numpag,String formato){
    		this.Titolo = Titolo;
    		this.Autore = Autore;
    		this.Anno = Anno;
    		this.Percorso = Percorso;
    		this.numpag = numpag;
    		this.formato=formato;
    	}
    	
    }
    Ovviamente questo array è correttamente dichiarato e riempito..
    Perfavore ho disperato aiutooo

  2. #2
    Ti consiglio di usare la serializzazione di ogni oggetto Book contenuto nel tuo array di Book, oppure devi proprio caricare singolarmente ogni stringa?

  3. #3
    Ma in realtà non ho vincoli, l'importante funzioni...
    Per serializzazioni intendi i FileInputStream e FileOutputStream?

  4. #4
    No si usa una altra classe ObjectOutputStream e ObjectInputStream, dammi qualche secondo e ti pubblico un esempio

  5. #5
    Ci ho provato, ma ho concluso poco, ti faccio vedere:

    SALVA:
    codice:
    File f = new File(txt_file.getText());
    								if(f.exists()){
    									int n = JOptionPane.showConfirmDialog(
    										    f_main,
    										    "File già presente.\nVuoi rinominarlo?",
    										    "Attenzione!!",
    										    JOptionPane.YES_NO_OPTION);
    									if(n != 0){
    										JOptionPane.showMessageDialog(f_main, "Salvataggio non avvenuto.");
    										return;
    									}
    									
    								}
    								try{
    									f_out = new FileOutputStream(txt_file.getText());
    								}catch(IOException ex){
    									JOptionPane.showMessageDialog(f_main, "Errore salvataggio file.");
    								}	
    								ObjectOutputStream os = null;
    								try{
    									os = new ObjectOutputStream(f_out);
    									for(int i=0;i<dim_book;i++){
    										os.writeObject(libro[i]);
    									}
    									os.flush();
    									os.close();
    								}catch(IOException ex1){
    									JOptionPane.showMessageDialog(f_main, "Errore salvataggio file.");
    								}
    									
    								JOptionPane.showMessageDialog(f_main, "Salvataggio avvenuto con successo.");
    								break;
    								
    								grafica_Panel();
    								return;
    CARICA:

    codice:
    ObjectInputStream is = null;
    								f_in = new FileInputStream(txt_file.getText());
    								is = new ObjectInputStream(f_in);
    								try{
    									for(int i=0;i< ??? ;i++){
    										libro[i]=(Book)is.readObject();
    									}
    									is.close();
    								}
    								catch(IOException ex){
    									JOptionPane.showMessageDialog(f_main, "Errore caricamento file.");
    								}

  6. #6
    codice:
    import java.io.*;
    
    public class Book implements Serializable{ 
        
        //implementando serializable, possiamo scrivere l'intero oggetto su un file
        
        public String Titolo;
        public String Autore;
        public String Anno;
        //public String Percorso; non ho ben capito cosa serva percorso e formato per cui l'ho eliminato
        public String numpag;
        //public String formato;
        
        public Book(String Titolo, String Autore, String Anno, String numpag){
            this.Titolo = Titolo;
            this.Autore = Autore;
            this.Anno = Anno;
          //  this.Percorso = Percorso;
            this.numpag = numpag;
          //  this.formato=formato;
        }
        
        public static void main(String[] args){
            
            Book books[] = new Book[2]; //Creiamo un array di 2 libri ad esempio 
            Book book1 = new Book("Biancaneve","Non lo so", "1990","200");
            Book book2 = new Book("La principessa sul pisello","Non lo so", "1992","230");
            
            //inserisco i libri nel array
            
            books[0] = book1;
            books[1] = book2;
            try{
                //STREAM PER SCRIVERE OGGETTO SU FILE
                ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("path_file.bin"));
                //STREAM PER LEGGERE OGGETTO DA FILE
                ObjectInputStream in = new ObjectInputStream(new FileInputStream("path_file.bin"));
                
                //STAMPO I LIBRI PRIMA DI SCRIVERE E RILEGGERE (SOLO PER DIMOSTRARE CHE I LIBRI CHE RILEGGERO SONO UGUALI)
                System.out.println("Libri inziali");
                for(int i=0; i<books.length; i++){
                    Book b = books[i];
                    System.out.println(b.Titolo+ " "+b.Autore+" "+b.Anno+" "+b.numpag);
                }
                //Scrivo i libri SU FILE
                out.writeObject(books);
                
                //Leggo i libri DA FILE
                books = (Book[])in.readObject();
                
                //RISTAMPO I LIBRI CHE ERANO STATI SCRITTI SUL FILE
                
                System.out.println("Letti da file");
                for(int i=0; i<books.length; i++){
                    Book b = books[i];
                    System.out.println(b.Titolo+ " "+b.Autore+" "+b.Anno+" "+b.numpag);
                }
                
            }catch(FileNotFoundException ex){
                ex.printStackTrace();
            }catch(IOException ex){
                ex.printStackTrace();
            }catch(ClassNotFoundException ex){
                ex.printStackTrace();
            }
        }
    }
    ecco qua ti conviene usare la serializzazione risparmi tempo e fatica,secondo me

  7. #7
    Grazie mille!!
    Cmq è molto simile a quello che ti ho postato sopra...secondotè dove sbaglio?

  8. #8
    Quale errore ti da il tuo codice?

  9. #9
    Non sò il numero di libri a priori, quindi nel mio codice non sò cosa mettere nel carica nel ciclo(dove metto i punti di domanda)

  10. #10
    Dunque dovresti fare come ho fatto io, ovvero scrivere tutto l'array direttamente senza usare il ciclo per scrivere e leggere

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.