Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Hybrid View

  1. #1

    Java PROBLEMA NEL CARICA FILE

    Ciao a tutti, ahimè sono ancora qua...
    Non riesco a caricare un file, che è stato salvato correttamente.
    Mando in seguito il codice per il salvataggio del file (Che è funzionante) e quello del caricamento che non funziona:
    Il mio intento è salvare in un oggetto di tipo Book, cosi dichiarato:
    Book[] libro = new Book[50];

    SALVA:

    codice:
    FileOutputStream f_out = null;try{
                                        f_out = new FileOutputStream(txt_file.getText());
                                        for(int i=0;i<dim_book;i++){
                                            f_out.write(libro[i].Titolo.getBytes());
                                            f_out.write(" ".getBytes());
                                            f_out.write(libro[i].Autore.getBytes());
                                            f_out.write(" ".getBytes());
                                            f_out.write(libro[i].Anno.getBytes());
                                            f_out.write(" ".getBytes());
                                            f_out.write(libro[i].Percorso.getBytes());
                                            f_out.write(" ".getBytes());
                                            f_out.write(libro[i].numpag.getBytes());
                                            f_out.write("\n\r".getBytes());
                                        }
                                        f_out.flush();
                                        f_out.close();
                                        JOptionPane.showMessageDialog(f_main, "Salvataggio avvenuto con successo.");
                                        grafica_Panel();
                                        
                                    }
                                    catch(IOException ex){
                                        JOptionPane.showMessageDialog(f_main, "Errore salvataggio file.");
                                    }

    CARICA:

    codice:
    FileInputStream f_in = null;
    try{
                                        f_in = new FileInputStream(txt_file.getText());
                                        for(int i=0;i<3;i++){
                                            f_in.read(libro[i].Titolo.getBytes());
                                            f_in.read(libro[i].Autore.getBytes());
                                            f_in.read(libro[i].Anno.getBytes());
                                            f_in.read(libro[i].Percorso.getBytes());
                                            f_in.read(libro[i].numpag.getBytes());
                                        }    
                                    
                                        f_in.close();
                                    }
                                    catch(IOException ex){
                                        JOptionPane.showMessageDialog(f_main, "Errore caricamento file.");
                                    }

    Non mi segnala errori di compilazione, ma quando eseguo e provo a fare una stampa del vettore libro, mi da un "java.lang.NullPointerException" poichè probabilmente accedo ad un area di libro che non contiene quello desiderato.

    Sò che il carica è sbagliato..ma non so proprio dove buttare la testa

    Aiutooo
    Ultima modifica di LeleFT; 16-01-2015 a 11:05 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da marco1462 Visualizza il messaggio
    Non mi segnala errori di compilazione, ma quando eseguo e provo a fare una stampa del vettore libro, mi da un "java.lang.NullPointerException" poichè probabilmente accedo ad un area di libro che non contiene quello desiderato.
    Hai postato poco codice .... bisognerebbe vedere il resto.

    E comunque fare f_out.write(libro[i].Titolo.getBytes()); tecnicamente ha senso e funziona (scrivi sul FileOutputStream i byte della stringa) ma fare f_in.read(libro[i].Titolo.getBytes()); NON ha assolutamente alcun senso.

    Quindi sarebbe un po' tutto da rivedere ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Libro è un oggetto dichiarato Book che ha 5 stringhe: Titolo, Autore, Anno,num pagine, percorso.
    Le stampa le ho fatte solo per vedere se il carica funzionava: System.out.println(libro[0].Titolo) e qua mi segnala il "java.lang.NullPointerException".
    Ho problemi proprio nel carica in un array..

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Book[] libro = new Book[50];

    Questa istruzione crea un array in grado di contenere 50 oggetti Book. Nessuna delle posizioni contiene ancora alcunché.

    Da qui la NullPointerException.

    Se vuoi usare la posizione 0, allora dovrai prima assegnargli un oggetto Book:

    libro[0] = new Book( ... ); // al posto dei puntini vanno passati gli eventuali parametri (se necessario)


    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
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Book[] libro = new Book[50];

    Questa istruzione crea un array in grado di contenere 50 oggetti Book. Nessuna delle posizioni contiene ancora alcunché.

    Da qui la NullPointerException.

    Se vuoi usare la posizione 0, allora dovrai prima assegnargli un oggetto Book:

    libro[0] = new Book( ... ); // al posto dei puntini vanno passati gli eventuali parametri (se necessario)


    Ciao.
    Ma questo solo se la carica funziona correttamente, giusto?

    codice:
    codice:
    FileInputStream f_in =null;
    try{
                                        f_in =newFileInputStream(txt_file.getText());
                                        for(int i=0;i<3;i++){
                                            f_in.read(libro[i].Titolo.getBytes());
                                            f_in.read(libro[i].Autore.getBytes());
                                            f_in.read(libro[i].Anno.getBytes());
                                            f_in.read(libro[i].Percorso.getBytes());
                                            f_in.read(libro[i].numpag.getBytes());
                                        }    
                                    
                                        f_in.close();
                                    }
                                    catch(IOException ex){
                                        JOptionPane.showMessageDialog(f_main,"Errore caricamento file.");
                                    }
    Non sò proprio dove battere la testa per la carica Quella li che ho provato a fare è imbarazzante...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da marco1462 Visualizza il messaggio
    Non sò proprio dove battere la testa per la carica Quella li che ho provato a fare è imbarazzante...
    Sì ... un pochino "imbarazzante", perché come ti ho detto prima, f_in.read(libro[i].Titolo.getBytes()); NON ha assolutamente alcun senso e non fa minimamente quello che (forse) ti stavi aspettando.

    Stai gestendo file "di testo", domanda: devi per forza usare FileOutputStream/FileInputStream? Perché non sono effettivamente i più appropriati per file di testo ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Eh..ahimè è un progetto, e ha lezione abbiamo visto solo FileOutputStream e FileInputStream...
    Deve funzionare sia su file di testo che file di dati.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da marco1462 Visualizza il messaggio
    Deve funzionare sia su file di testo che file di dati.
    Che vuol dire!? Un file o è "binario" o è "di testo". E quale dei due lo devi/puoi scegliere tu in base alle esigenze. E in entrambi i casi c'è da valutare il formato delle informazioni memorizzate.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Sì ... un pochino "imbarazzante", perché come ti ho detto prima, f_in.read(libro[i].Titolo.getBytes()); NON ha assolutamente alcun senso e non fa minimamente quello che (forse) ti stavi aspettando.

    Stai gestendo file "di testo", domanda: devi per forza usare FileOutputStream/FileInputStream? Perché non sono effettivamente i più appropriati per file di testo ....
    Come ti è stato detto, per prima cosa decidi il formato in cui scrivere il file, per poi preoccuparti sul come caricarlo.

  10. #10
    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    Come ti è stato detto, per prima cosa decidi il formato in cui scrivere il file, per poi preoccuparti sul come caricarlo.
    File di testo

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.