Scrittura file di testo

di il
2 risposte

Scrittura file di testo

Ho realizzato un semplice programma che legge caratteri dal file di testo temp1.txt e li scrive
in temp2.txt. Se elimino w.flush(), il file di destinazione temp2.txt risulta vuoto. Con flush
i caratteri vengono trasferiti. LA domanda è questa: quando viene eseguita w.write(nextc) il carattere non viene scritto nel secondo file?

FileWriter w = new FileWriter("temp2.txt");//apro in scrittura
FileReader r = new FileReader("temp1.txt");//apro in lettura

next = r.read(); // leggo il primo carattere da temp1.txt
while(next != -1){// verifico la fine di temp1.txt
nextc = (char) next;

//scrittura in temp2.txt (w)
w.write(nextc);
next = r.read(); //rileggo il carattere successivo
}
w.flush();
}

2 Risposte

  • Re: Scrittura file di testo

    Il flush è ok, non è sbagliato. Ma quello che devi fare è il close() e soprattutto di entrambi (FileWriter e FileReader), anche quando i read/write lanciano una eccezione. E questo vuol dire che devi anche saper usare correttamente il costrutto try-finally.


    P.S. in generale leggere e scrivere 1 carattere (o 1 byte se con gli stream) per volta va bene solo per gli inizi a livello "didattico".
  • Re: Scrittura file di testo

    Ok, il close() funziona. Pongo un'ultima domanda. Ricordo tempo fa di aver letto che, anche se viene omessa la chiusura esplicita di un file, provvedera' il sistema operativo alla sua chiusura al termine dell'esecuzione del programma. E' vero oppure no?.
    Grazie.
Devi accedere o registrarti per scrivere nel forum
2 risposte