Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Problema] Caricamento / Salvataggio File

    Buonasera a tutti, sono nuovo. Mi chiamo paolo e faccio la 4° informatica. Mi è stato assegnato questo programma: Realizzare una 'banca' che gestisca i conti corrente. sono riuscito a concretizzare tutto l'unica parte che mi manca è quella che riguarda il salvataggio e il caricamento del file.
    sono riuscito a mettere insieme il salvtaggio ( non so quanto possa essere corretto) ma la carica proprio no, di seguito riporto il codice per il salvtaggio e quello per il caricamento ripreso da un texteditor, non so se può servire. scusatemi ma sono completamente in panne.

    Più nel dettaglio, ho una classe banca dove raccolgo: nome, cognome, numero conto e saldo
    e posso fare 4 operazioni: aggiungere,modificare,ricercare ed eliminare


    SALVTAGGIO
    codice:
               try {                JFileChooser fileChooser = new JFileChooser();
                    int returnVal = fileChooser.showSaveDialog(this);
                    if (returnVal == JFileChooser.APPROVE_OPTION) {
                        ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(fileChooser.getSelectedFile()));
                        stream.writeObject(Banca);
                    }
                    salva = false;
               } catch (IOException ex) {
                     JOptionPane.showMessageDialog(this ,"Errore nel Salvataggio");
               }


    CARICAMENTO
    codice:
    public void apriFile(){        final JFileChooser fc_open = new JFileChooser();
            //Filtro per impostare a txt i file da aprire
            fc_open.setFileFilter(new TextFilter());
            //Apro la finestra "Apri" in risposta al click del bottone
            int returnVal = fc_open.showOpenDialog(jf);  
            if(returnVal == JFileChooser.APPROVE_OPTION) {
                //Prendo l'oggetto file selezionato
                File f_open = fc_open.getSelectedFile();
                FileInputStream fis = null;
                try {
                    // Apro il flusso di input stream
                    fis = new FileInputStream(f_open);
                    // Lettura del file  carattere per carattere;
                    // Costruisco la stringa contenente tutto il contenuto del file
                    StringBuilder sb = new StringBuilder();
                    int content;
                    while ((content = fis.read()) != -1) {
                        sb.append((char) content);
                    }                
                    // Carico la stringa nella Text Area
                    txtArea.setText(sb.toString());
                    lblStatusBar.setText(f_open.getName());
                    lblPathFileName.setText(f_open.getAbsolutePath());
                    isDirty = false;
                } catch (FileNotFoundException e) {
                    lblStatusBar.setText(f_open.getName()+": file non trovato");
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (fis != null)
                            fis.close();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }                
            }        
        }

    Volendo riporto anche il programma per chi volesse prendere qualche spunto o per chi volesse capire qualcosa di più : https://www.mediafire.com/?pvx2bq4r21m7b25
    Ultima modifica di duffydoger; 29-04-2014 a 20:00

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ciao e benvenuto, ritengo sia java mentre questo è il forum javascript se è così chiedi il trasferimento della discussione segnalandola (usando icona immagine in basso a sinistrati con !)

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    si mi sono sbagliato, grazie mille ho già fatto richiesta!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da duffydoger Visualizza il messaggio
    codice:
                        ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(fileChooser.getSelectedFile()));
                        stream.writeObject(Banca);
    Qui stai usando la serializzazione degli oggetti ... ed è un conto. Il file generato è un file "binario" con il formato ben specifico della serializzazione.


    Quote Originariamente inviata da duffydoger Visualizza il messaggio
    codice:
                    fis = new FileInputStream(f_open);
                    // Lettura del file  carattere per carattere;
                    // Costruisco la stringa contenente tutto il contenuto del file
                    StringBuilder sb = new StringBuilder();
                    int content;
                    while ((content = fis.read()) != -1) {
                        sb.append((char) content);
                    }
    Qui stai leggendo un file di "testo" ... ed è tutto un altro conto. Oltretutto non è nemmeno correttissimo, perché innanzitutto qui non stai leggendo "caratteri" ma "byte". Poi se un file di testo fosse codificato in ASCII o ISO-8859-1 per cui 1 byte=1 carattere allora "guarda caso" sarebbe corretto.

    Ma ad ogni modo, il file salvato non è di testo ma binario con la serializzazione degli oggetti. Se da una parte hai usato FileOutputStream/ObjectOutputStream/writeObject .... dall'altra parte dovrai per forza usare gli speculari: FileInputStream/ObjectInputStream/readObject.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Aggiungo ancora un'altra cosa: non so quanto possa essere grande il file che devi gestire, se poche centinaia di byte o decine e decine di kilobyte. In generale, sarebbe meglio "bufferizzare" l'input/output quando si usa a monte la serializzazione degli oggetti. Basta inserire in mezzo una classe di buffering:

    ObjectOutputStream --> BufferedOutputStream --> FileOutputStream
    e
    ObjectInputStream <-- BufferedInputStream <-- FileInputStream
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.