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

    [JAVA]Problema Scrittura File

    Salve ragazzi! allora io ho un metodo che dovrebbe scrivermi in un file i vari ID e Descrizioni di un oggetto Item settati in un metodo main. Richiamo questo metodo piu volte.
    Quando però vado a scrivere nel file compare solamente l'ultimo elemento appena passato al suddetto metodo.

    Ho provato tramite il costruttore di FileWriter con l'append però in quel caso ogni volta che rimando in esecuzione il programma mi riscrive di nuovo i stessi dati.

    Insomma per evitare che ogni volta la mia prima riga viene sovrascritta ogni volta che chiamo il metodo come posso fare per andare a capo e quindi non perdermi i valori?!

    Grazie in anticipo!

    codice:
    public void salvaItem(Item item){
    
    
    			FileWriter fw = null;
    
    			try {
    
    				fw = new FileWriter(f);
    				fw.write(item.getID() + "|" + item.getDescrizione() + "\r\n");
    				fw.flush();
    				fw.close();
    
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    			finally{
    				try {
    					fw.flush();
    					fw.close();
    				} catch (IOException e) {
    
    					e.printStackTrace();
    				}
    			}
    		}

  2. #2
    Risolto!

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Immagino che tu abbia aggiunto il parametro boolean alla costruzione del FileWriter, che ti indica la modalità di append.

    Attenzione, comunque, che quel codice è potenzialmente errato: non fai un buon uso del costrutto try/catch/finally.

    La chiusura del FileWriter va fatta solo nel blocco finally (visto che viene eseguito sempre e comunque), ma va fatta solo ed esclusivamente a condizione che l'oggetto sia stato correttamente creato (oltre a non aver senso la chiusura di un file che non è stato creato/aperto, avresti anche una bella NullPointerException). La flush(), invece, va fatta solo nel blocco try.

    codice:
    FileWriter fw = null;
    try {
       fw = new FileWriter(f, true);
       ...
       fw.flush();
    catch (Exception e) {
       e.printStackTrace();
    } finally {
       if (fw != null) {
          try { fw.close(); } catch (Exception e) { }
       }
    }
    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

  4. #4
    Perdono! ho l'abitudine di fare le cose in fretta e quindi di tralasciare alcune cose per dar importanza al succo del metodo.
    Devo togliermi questa abitudine.
    Ti ringrazio comunque dei consigli, ho subito corretto.

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.