Java FileWriter

La classe Java FileWriter, java.io.FileWriter, consente di scrivere caratteri in un file. A questo proposito il FileWriter Java funziona molto come FileOutputStream tranne che a FileOutputStream è basato su byte, mentre a FileWriter è basato su caratteri. Il FileWriter è destinato a scrivere testo, in altre parole. Un carattere può corrispondere a uno o più byte, a seconda dello schema di codifica dei caratteri in uso. La classe Java FileWriter è una sottoclasse della classe Java Writer, a proposito.

FileWriter Example

Ecco un semplice esempio Java FileWriter :

Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();

Nota: La corretta gestione delle eccezioni è stata saltata qui per motivi di chiarezza. Per ulteriori informazioni sulla corretta gestione delle eccezioni, vai a Gestione delle eccezioni Java IO.

FileWriter ha anche altri costruttori, consentendo di specificare il file su cui scrivere in modi diversi. Guarda nel JavaDoc ufficiale per informazioni più dettagliate.

Sovrascrittura vs Aggiunta del file

Quando si crea un Java FileWriter è possibile decidere se si desidera sovrascrivere qualsiasi file esistente con lo stesso nome o se si desidera aggiungere a qualsiasi file esistente. Lo decidi tu scegliendo quale costruttore FileWriter usi.

Il costruttore FileWriter che prende un solo parametro, il nome del file, sovrascriverà qualsiasi file esistente:

Writer fileWriter = new FileWriter("c:\data\output.txt");

FileWriter ha un costruttore che prende anche 2 parametri: Il nome del file e un booleano. Il booleano indica se aggiungere o sovrascrivere un file esistente. Ecco due esempi Java FileWriter che mostrano che:

Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file

FileWriter Character Encoding

FileWriter presuppone che si desideri codificare i byte nel file utilizzando la codifica dei caratteri predefinita per il computer su cui è in esecuzione l’applicazione. Questo potrebbe non essere sempre quello che vuoi, e non puoi cambiarlo!

Se si desidera specificare un diverso schema di codifica dei caratteri, non utilizzare un FileWriter. Usa invece un OutputStreamWriter su un FileOutputStream. OutputStreamWriter consente di specificare lo schema di codifica dei caratteri da utilizzare quando si scrivono byte nel file sottostante.

write(int)

Il metodo Java FileWriter write(int) scrive i 16 bit inferiori di int nella destinazione a cui è connesso FileWriter, come un singolo carattere. Ecco un esempio di scrittura di un singolo carattere in Java FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');

write(char)

Java FileWriter ha anche un metodo write(char) che può scrivere un array di caratteri nella destinazione a cui è connesso FileWriter. Il metodo write(char) restituisce il numero di caratteri effettivamente scritti su FileWriter. Ecco un esempio di scrittura di una serie di caratteri su un Java FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);

Prestazioni di scrittura

È più veloce scrivere una serie di caratteri su un FileWriter Java piuttosto che scrivere un carattere alla volta. L’aumento di velocità può essere abbastanza significativo – fino a 10 volte superiore o superiore. Pertanto si consiglia di utilizzare i metodi write(char) quando possibile.

La velocità esatta che si ottiene dipende dal sistema operativo sottostante e dall’hardware del computer su cui si esegue il codice Java. L’accelerazione dipende da problemi come la velocità della memoria, la velocità del disco rigido e le dimensioni del buffer, ecc.

Buffering trasparente tramite BufferedWriter

È possibile ottenere un buffering trasparente di byte scritti su un Java FileWriter avvolgendolo in un Java BufferedWriter . Tutti i byte scritti in BufferedWriterverranno prima bufferizzati all’interno di un array di byte interno in BufferedWriter. Quando il buffer è pieno, il buffer viene scaricato al sottostante FileWriter tutto in una volta. Ecco un esempio di avvolgimento di un Java FileWriter in un BufferedWriter:

int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );

Puoi leggere di più su BufferedWriter nel mio tutorial BufferedWriter.

flush ()

Il metodo Java FileWriter flush() svuota tutti i dati scritti nel FileWriter nel file sottostante. I dati potrebbero essere bufferizzati nella memoria del sistema operativo da qualche parte, anche se il codice Java lo ha scritto su FileWriter. Chiamando flush() puoi assicurarti che tutti i dati bufferizzati verranno scaricati (scritti) su disco. Ecco un esempio di flushing dei dati scritti su un Java FileWriter chiamando il suo metodo flush() :

fileWriter.flush();

Chiusura di un FileWriter

Quando hai finito di scrivere caratteri su un Java FileWriter dovresti ricordarti di chiuderlo. La chiusura di un FileWriter viene eseguita chiamando il suo metodo close(). Ecco come appare la chiusura di un Java FileWriter :

fileWriter.close();

È inoltre possibile utilizzare il costrutto try-with-resources introdotto in Java 7. Ecco come utilizzare e chiudere un aspetto FileWriter con il costrutto try-with-resources:

try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.