Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354

    [java] Problema scrittura su file

    Salva,

    La funzione che vi ho postato qui sotto deve scrivere tutti gli elementi pari di una lista (Elemento testa) e poi il numero di essi (int n). La funzione deve scrivere il risultato a video (cosa che va alla perfezione) e su un file(cosa che non fà), il cui nome gli viene passato come parametro (String file):

    codice:
    void scriviFile(String file){
        int n=0;
        PrintWriter output=null;
        Elemento tmp;
        try{
          output=new PrintWriter(new BufferedWriter(new FileWriter(file)));
          for(tmp=testa;tmp.next!=null;tmp=tmp.next)
            if(tmp.valore%2==0){
              n++;
              output.println(tmp.valore);
              System.out.println(tmp.valore+" paro: "+n);
            }
          output.println("Ci sono: "+n+" elementi pari!");
          System.out.println("Ci sono: "+n+" elementi pari!");
        }catch (Exception ex){
          System.out.println("Errore nella creazione del file");
        }
      }
    Qualcuno sa dirmi perché non scrive sul file? il file viene creato ma questo resta vuoto.

    Potreste, gentilmente illuminarmi sull'uso e sulla gestione dei file in java?

  2. #2
    non sò io sono alle prime armi ma ti consiglio di leggerti una guida oppure di leggere gli errori che ti da nella creazione del file in questo modo potresti provare a trovare una possibile soluzione oppure prova a fare un aggiornamento di scrittura e lettura se ci riesci

  3. #3
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Se fosse possibile non lo avrei postato qui!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Da quel che vedo manca completamente la chiusura del file alla fine. Di conseguenza, avendo usato classi che utilizzano la bufferizzazione, tutti i dati bufferizzati e non ancora scritti vengono persi al termine del programma.

    Ad ogni modo, hai usato del codice piuttosto macchinoso per la creazione del file: hai creato un PrintWriter, associato ad un BufferedWriter costruito su un FileWriter...
    Per scrivere su un file di testo puoi usare direttamente un PrintStream (stessa classe dell'oggetto System.out) costruito su un FileOutputStream:

    codice:
    PrintStream ps = new PrintStream( new FileOutputStream(nomeFile) );
       ps.println( ... );
       ...
    ps.close();
    Comunque, se non vuoi toccare il tuo codice, aggiungi un output.close() alla fine delle scritture (e magari anche un output.flush() dopo ciascuna operazione di scrittura).

    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
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Grazie, grazie 1000!!

    Il programma adesso funziona perfettamente e grazie della miglioria su come chiamare il file. Ottimizzare è sempre meglio! Hai qualcosa anche per chiamare un file in input?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da unit1
    Hai qualcosa anche per chiamare un file in input?
    Dipende da cosa ci devi fare ... nel senso di cosa vuoi ottenere. Vuoi leggere un file di testo riga x riga?? Allora FileReader incapsulato in un BufferedReader (ma così usa il charset di default) oppure FileInputStream incapsulato in un InputStreamReader (si può specificare un appropriato charset) a sua volta incapsulato in un BufferedReader.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Ok, perfetto! Grazie a tutti per l'aiuto.

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.