Java FileWriter

1. Panoramica

In questo tutorial impareremo e capiremo la classe FileWriter presente nel pacchetto java.io.

2. FileWriter

FileWriter è un OutputStreamWriter specializzato per la scrittura di file di caratteri . Non espone alcuna nuova operazione ma funziona con le operazioni ereditate dalleclassi OutputStreamWriter e Writer .

Fino a Java 11, FileWriter funzionava con la codifica dei caratteri predefinita e la dimensione del buffer di byte predefinita. Tuttavia, Java 11 ha introdotto quattro nuovi costruttori che accettano un Charset, consentendo in tal modo specificato dall'utente Charset . Sfortunatamente, non possiamo ancora modificare la dimensione del buffer di byte ed è impostata su 8192.

2.1. Creazione di istanze di FileWriter

Ci sono cinque costruttori nella classe FileWriter se usiamo una versione Java precedente a Java 11.

Diamo uno sguardo a vari costruttori:

public FileWriter(String fileName) throws IOException { super(new FileOutputStream(fileName)); } public FileWriter(String fileName, boolean append) throws IOException { super(new FileOutputStream(fileName, append)); } public FileWriter(File file) throws IOException { super(new FileOutputStream(file)); } public FileWriter(File file, boolean append) throws IOException { super(new FileOutputStream(file, append)); } public FileWriter(FileDescriptor fd) { super(new FileOutputStream(fd)); }

Java 11 ha introdotto quattro costruttori aggiuntivi:

public FileWriter(String fileName, Charset charset) throws IOException { super(new FileOutputStream(fileName), charset); } public FileWriter(String fileName, Charset charset, boolean append) throws IOException { super(new FileOutputStream(fileName, append), charset); } public FileWriter(File file, Charset charset) throws IOException { super(new FileOutputStream(file), charset); } public FileWriter(File file, Charset charset, boolean append) throws IOException { super(new FileOutputStream(file, append), charset); }

2.2. Scrittura di una stringa in un file

Usiamo ora uno dei costruttori di FileWriter per creare un'istanza di FileWriter e quindi scrivere su un file:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) { fileWriter.write("Hello Folks!"); }

Abbiamo utilizzato il costruttore a singolo argomento del FileWriter che accetta un nome di file. Quindi usiamo l'operazione write (String str) ereditata dalla classe Writer . Poiché FileWriter è AutoCloseable , abbiamo utilizzato try-with-resources in modo da non dover chiudere il FileWriter in modo esplicito .

Eseguendo il codice precedente, la stringa verrà scritta nel file specificato:

Hello Folks!

Il FileWriter non garantisce se il file FileWriterTest.txt sarà disponibile o essere creato. Dipende dalla piattaforma sottostante.

Dobbiamo anche tenere presente che alcune piattaforme possono consentire solo a una singola istanza di FileWriter di aprire il file. In tal caso, gli altri costruttori della classe FileWriter falliranno se il file coinvolto è già aperto.

2.3. Aggiunta di una stringa a un file

Spesso abbiamo bisogno di aggiungere dati al contenuto esistente di un file. Vediamo ora un esempio di FileWriter che supporta l'aggiunta:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt", true)) { fileWriter.write("Hello Folks Again!"); }

Come possiamo vedere, abbiamo usato il costruttore a due argomenti che accetta un nome file e un flag booleano append . Passare il flag append come true crea un FileWriter che ci consente di aggiungere testo ai contenuti esistenti di un file .

All'esecuzione del codice, avremo la stringa aggiunta al contenuto esistente del file specificato:

Hello Folks!Hello Folks Again! 

3. Conclusione

In questo articolo, abbiamo imparato a conoscere la classe di convenienza FileWriter e un paio di modi in cui è possibile creare FileWriter . L'abbiamo quindi utilizzato per scrivere dati su un file.

Come sempre, il codice sorgente completo del tutorial è disponibile su GitHub.