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.