Java FileWriter

Die Java FileWriter-Klasse java.io.FileWriter ermöglicht das Schreiben von Zeichen in eine Datei. In dieser Hinsicht funktioniert der Java FileWriter ähnlich wie der FileOutputStream, außer dass ein FileOutputStream bytebasiert ist, während ein FileWriter zeichenbasiert ist. Das FileWriter soll mit anderen Worten Text schreiben. Ein Zeichen kann je nach verwendetem Zeichencodierungsschema einem oder mehreren Bytes entsprechen. Die Java FileWriter -Klasse ist übrigens eine Unterklasse der Java Writer-Klasse.

FileWriter Beispiel

Hier ist ein einfaches Java FileWriter Beispiel:

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

Hinweis: Die korrekte Ausnahmebehandlung wurde hier aus Gründen der Übersichtlichkeit übersprungen. Weitere Informationen zur korrekten Ausnahmebehandlung finden Sie unter Java IO Exception Handling.

Der FileWriter hat auch andere Konstruktoren, mit denen Sie die zu schreibende Datei auf verschiedene Arten angeben können. Weitere Informationen finden Sie im offiziellen JavaDoc.

Überschreiben vs. Anhängen der Datei

Wenn Sie eine Java FileWriter erstellen, können Sie entscheiden, ob Sie eine vorhandene Datei mit demselben Namen überschreiben oder an eine vorhandene Datei anhängen möchten. Sie entscheiden, dass durch die Wahl, was FileWriter Konstruktor Sie verwenden.

Der FileWriter Konstruktor, der nur einen Parameter, den Dateinamen, verwendet, überschreibt alle vorhandenen Dateien:

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

FileWriter hat einen Konstruktor, der auch 2 Parameter akzeptiert: Den Dateinamen und einen Booleschen Wert. Der boolesche Wert gibt an, ob eine vorhandene Datei angehängt oder überschrieben werden soll. Hier sind zwei Java FileWriter Beispiele, die das zeigen:

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

Das FileWriter setzt voraus, dass Sie die Bytes in die Datei mit der Standardzeichencodierung für den Computer codieren möchten, auf dem Ihre Anwendung ausgeführt wird. Dies ist möglicherweise nicht immer das, was Sie wollen, und Sie können es nicht ändern!

Wenn Sie ein anderes Zeichencodierungsschema angeben möchten, verwenden Sie kein FileWriter. Verwenden Sie stattdessen eine OutputStreamWriter auf einer FileOutputStream . Mit OutputStreamWriter können Sie das Zeichencodierungsschema angeben, das beim Schreiben von Bytes in die zugrunde liegende Datei verwendet werden soll.

write(int)

Die Java-Methode FileWriter write(int) schreibt das untere 16-Bit von int als einzelnes Zeichen an das Ziel, mit dem FileWriter verbunden ist. Hier ist ein Beispiel für das Schreiben eines einzelnen Zeichens in ein Java FileWriter:

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

write(char)

Die Java FileWriter hat auch eine write(char) Methode, die ein Array von Zeichen an das Ziel schreiben kann, mit dem FileWriter verbunden ist. Die Methode write(char) gibt die Anzahl der tatsächlich in FileWriter geschriebenen Zeichen zurück. Hier ist ein Beispiel für das Schreiben eines Arrays von Zeichen in ein Java FileWriter:

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

Schreibleistung

Es ist schneller, ein Array von Zeichen in einen Java-Dateischreiber zu schreiben, als jeweils ein Zeichen zu schreiben. Die Beschleunigung kann ziemlich signifikant sein – bis zu 10 x höher oder mehr. Daher wird empfohlen, wann immer möglich die write(char) -Methoden zu verwenden.

Die genaue Beschleunigung hängt vom zugrunde liegenden Betriebssystem und der Hardware des Computers ab, auf dem Sie den Java-Code ausführen. Die Beschleunigung hängt von Problemen wie Speichergeschwindigkeit, Festplattengeschwindigkeit und Puffergrößen usw. ab.

Transparente Pufferung über BufferedWriter

Sie können eine transparente Pufferung von Bytes erhalten, die in ein Java FileWriter geschrieben wurden, indem Sie es in einen Java BufferedWriter . Alle in den BufferedWriter geschriebenen Bytes werden zuerst in einem internen Byte-Array im BufferedWriter gepuffert. Wenn der Puffer voll ist, wird der Puffer auf einmal auf den zugrunde liegenden FileWriter geleert. Hier ist ein Beispiel für das Umschließen eines Java FileWriter in a BufferedWriter:

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

Sie können mehr über die BufferedWriter in meinem BufferedWriter Tutorial lesen.

flush()

Die flush() -Methode von Java FileWriter löscht alle in FileWriter geschriebenen Daten in die zugrunde liegende Datei. Die Daten werden möglicherweise irgendwo im Betriebssystemspeicher gepuffert, selbst wenn Ihr Java-Code sie in FileWriter geschrieben hat. Durch den Aufruf von flush() können Sie sicherstellen, dass alle gepufferten Daten auf die Festplatte geschrieben werden. Hier ist ein Beispiel für das Leeren von Daten, die in ein Java FileWriter geschrieben wurden, indem die flush() -Methode aufgerufen wird:

fileWriter.flush();

Schließen eines FileWriter

Wenn Sie mit dem Schreiben von Zeichen in ein Java FileWriter fertig sind, sollten Sie daran denken, es zu schließen. Das Schließen eines FileWriter erfolgt durch Aufrufen seiner close() -Methode. So sieht das Schließen eines Java FileWriter aus:

fileWriter.close();

Sie können auch das in Java 7 eingeführte Konstrukt try-with-resources . So verwenden und schließen Sie ein FileWriter -Objekt mit dem Konstrukt try-with-resources:

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.