Java FileWriter

1. Übersicht

In diesem Tutorial lernen und verstehen wir die FileWriter- Klasse, die im Paket java.io enthalten ist.

2. FileWriter

FileWriter ist ein spezialisierter OutputStreamWriter zum Schreiben von Zeichendateien . Es macht keine neuen Operationen verfügbar , funktioniert jedoch mit den Operationen, die von denKlassen OutputStreamWriter und Writer geerbt wurden.

Bis Java 11 arbeitete der FileWriter mit der Standardzeichencodierung und der Standardbytepuffergröße. In Java 11 wurden jedoch vier neue Konstruktoren eingeführt, die einen Zeichensatz akzeptieren , wodurch benutzerdefinierte Zeichensätze zulässig sind . Leider können wir die Bytepuffergröße immer noch nicht ändern und sie ist auf 8192 eingestellt.

2.1. Instanziieren des FileWriter

Die FileWriter- Klasse enthält fünf Konstruktoren, wenn wir eine Java-Version vor Java 11 verwenden.

Werfen wir einen Blick auf verschiedene Konstruktoren:

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 führte vier zusätzliche Konstruktoren ein:

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. Schreiben eines Strings in eine Datei

Verwenden wir nun einen der FileWriter- Konstruktoren, um eine Instanz von FileWriter zu erstellen und dann in eine Datei zu schreiben:

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

Wir haben den Konstruktor für einzelne Argumente des FileWriter verwendet , der einen Dateinamen akzeptiert. Wir verwenden dann die Schreiboperation (String str) , die von der Writer- Klasse geerbt wurde . Da das Filewriter ist AutoCloseable haben wir Try-with-Ressourcen verwendet , so dass wir nicht die schließen müssen Filewriter explizit .

Bei Ausführung des obigen Codes wird der String in die angegebene Datei geschrieben:

Hello Folks!

Der FileWriter garantiert nicht, ob die Datei FileWriterTest.txt verfügbar ist oder erstellt wird. Es ist abhängig von der zugrunde liegenden Plattform.

Wir müssen auch beachten, dass auf bestimmten Plattformen möglicherweise nur eine einzige FileWriter- Instanz die Datei öffnen kann. In diesem Fall schlagen die anderen Konstruktoren der FileWriter- Klasse fehl, wenn die betreffende Datei bereits geöffnet ist.

2.3. Anhängen eines Strings an eine Datei

Wir müssen häufig Daten an den vorhandenen Inhalt einer Datei anhängen. Sehen wir uns nun ein Beispiel für einen FileWriter an , der das Anhängen unterstützt:

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

Wie wir sehen können, haben wir den Konstruktor mit zwei Argumenten verwendet, der einen Dateinamen und ein Boolesches Flag zum Anhängen akzeptiert . Wenn Sie das Flag append als true übergeben, wird ein FileWriter erstellt , mit dem wir Text an vorhandene Inhalte einer Datei anhängen können .

Bei der Ausführung des Codes wird der String an den vorhandenen Inhalt der angegebenen Datei angehängt:

Hello Folks!Hello Folks Again! 

3. Fazit

In diesem Artikel haben wir die Convenience-Klasse FileWriter und einige Möglichkeiten kennengelernt, wie der FileWriter erstellt werden kann. Wir haben es dann verwendet, um Daten in eine Datei zu schreiben.

Wie immer ist der vollständige Quellcode für das Tutorial auf GitHub verfügbar.