Java FileWriter
- Die Java FileWriter-Klasse ist Teil des
java.io
-Pakets. - FileWriter ist eine Unterklasse der Klasse
java.io.OutputStreamWriter
. - FileWriter ist dazu gedacht, Zeichenströme zu schreiben.
- FileWriter wird verwendet, um in Zeichendateien zu schreiben. Die
write()
-Methoden ermöglichen es Ihnen, Zeichen oder Zeichenketten in eine Datei zu schreiben. - FileWriter-Objekte werden normalerweise von höherstufigen Writer-Objekten umhüllt, wie zum Beispiel von BufferedWriter oder
PrintWriter
, die eine bessere Leistung und höherstufige, flexiblere Methoden zum Schreiben von Daten bereitstellen.
FileWriter-Konstruktoren
FileWriter(File file)
: Erstellt einFileWriter
-Objekt unter Verwendung des angegebenen File-Objekts. Es wirft eineIOException
aus, wenn die Datei existiert, aber ein Verzeichnis anstelle einer regulären Datei ist oder nicht existiert, nicht erstellt werden kann oder aus einem anderen Grund nicht geöffnet werden kann.FileWriter(File file, boolean append)
: Erstellt ein FileWriter-Objekt unter Verwendung des angegebenen File-Objekts. Wenn das zweite Argument true ist, werden die Bytes ans Ende der Datei geschrieben, anstatt ans Anfang. Es wirft eine IOException aus, wenn die Datei existiert, aber ein Verzeichnis anstelle einer regulären Datei ist oder nicht existiert, aber nicht erstellt werden kann, oder aus einem anderen Grund nicht geöffnet werden kann.FileWriter(FileDescriptor fd)
: Erstellt ein FileWriter-Objekt, das mit dem angegebenen Dateideskriptor verbunden ist.FileWriter(String fileName)
: Erstellt ein FileWriter-Objekt mit dem angegebenen Dateinamen. Es wirft eineIOException
aus, wenn die benannte Datei existiert, aber ein Verzeichnis anstelle einer regulären Datei ist oder nicht existiert, aber nicht erstellt werden kann, oder aus einem anderen Grund nicht geöffnet werden kann.FileWriter(String fileName, boolean append)
: Erstellt ein FileWriter-Objekt mit dem angegebenen Dateinamen und einem booleschen Wert, der angibt, ob die Daten angehängt werden sollen oder nicht. Wenn das zweite Argument true ist, werden die Daten ans Ende der Datei geschrieben, anstatt ans Anfang. Es wirft eine IOException aus, wenn die benannte Datei existiert, aber ein Verzeichnis anstelle einer regulären Datei ist oder nicht existiert, aber nicht erstellt werden kann, oder aus einem anderen Grund nicht geöffnet werden kann.
Java FileWriter Beispiel
FileWriter erbt die Methode der Klassen java.io.OutputStreamWriter
und java.io.Writer
. Schauen wir uns die unten stehenden Methoden mit Beispielen an.
write(int c)
Diese Methode schreibt ein einzelnes Zeichen, das durch int c angegeben ist.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
import java.io.IOException;
/**
* Java write file using FileWriter write method
*
* @author pankaj
*
*/
public class FileWriterWriteIntExample {
public static void main(String[] args) {
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("D:/data/file.txt");
// geerbte Methode von java.io.OutputStreamWriter
fileWriter.write(65);
fileWriter.write(66);
fileWriter.write(67);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (fileWriter != null) {
fileWriter.flush();
fileWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileWriter implementiert das Interface
AutoCloseable
, daher können wir try with resources verwenden, während wir die Klasse FileWriter verwenden.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write method using try with resource
*
* @author pankaj
*
*/
public class FileWriterWriteIntTryWithResource {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
// geerbte Methode von java.io.OutputStreamWriter
fileWriter.write(65);
fileWriter.write(66);
fileWriter.write(67);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Hinweis: Im obigen Programm schreibt fileWriter.write(65)
A in die Datei, weil 65 der Dezimalwert für das Zeichen A ist. Daher wird die Ganzzahl 65 in das Zeichen A umgewandelt und dasselbe gilt für andere Werte.
write(String str, int off, int len)
Diese Methode schreibt einen Teil des Strings str
von int off
bis int len
.
- str: Zu schreibender String
- off: Offset, ab dem die Zeichen gelesen werden sollen
- len: Anzahl der zu schreibenden Zeichen
Wenn der Wert des len-Parameters negativ ist, werden keine Zeichen geschrieben.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(String s, int off, int len) method
*
* @author pankaj
*
*/
public class FileWriterWriteStringExample {
public static void main(String[] args) {
String data = "This is FileWriter Example.";
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//vererbte Methode von java.io.OutputStreamWriter
fileWriter.write(data, 8, 10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
write(char[] cbuf, int off, int len)
Diese Methode schreibt einen Teil eines Zeichenarrays, das durch char[] cbuf
von int off
bis int len
angegeben ist.
- cbuf: Ein Zeichenarray
- off: Offset, ab dem das Lesen der Zeichen beginnen soll
- len : Anzahl der zu schreibenden Zeichen
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(char[] cbuf, int off, int len) method
*
* @author pankaj
*
*/
public class FileWriterWriteCharArray {
public static void main(String[] args) {
char[] data = "This is FileWriter Example.".toCharArray();
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//vererbte Methode von java.io.OutputStreamWriter
fileWriter.write(data, 8, 10);
} catch (Exception e) {
e.printStackTrace();
}
}
}
write(char[] cbuf)
Diese Methode schreibt das durch cbuf angegebene Zeichenarray.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(char[] cbuf) method
*
* @author pankaj
*
*/
public class FileWriterWriteCharArrayExample {
public static void main(String[] args) {
char[] data = "This is FileWriter Example.".toCharArray();
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//vererbte Methode von java.io.Writer
fileWriter.write(data);
} catch (Exception e) {
e.printStackTrace();
}
}
}
write(String str)
Diese Methode schreibt einen Zeichenkettenwert in die durch str
angegebene Datei.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter write(String str) method
*
* @author pankaj
*
*/
public class FileWriterWriteString {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//vererbte Methode von java.io.Writer
fileWriter.write("JournalDev");
} catch (Exception e) {
e.printStackTrace();
}
}
}
anfügen(char c)
Diese Methode fügt das angegebene Zeichen diesem Schreiber hinzu, wobei c
das 16-Bit-Zeichen zum Anfügen ist.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file using FileWriter append(char c) method
*
* @author pankaj
*
*/
public class FileWriterAppendCharacter {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//geerbte Methode von java.io.Writer
fileWriter.write("JournalDev");
fileWriter.append('C');
} catch (Exception e) {
e.printStackTrace();
}
}
}
spülen()
Diese Methode spült den Stream. Wenn die Methode spülen()
aufgerufen wird, schreibt sie sofort die Daten in die Ausgabedatei.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file with FileWriter flush() method
*
* @author pankaj
*
*/
public class FileWriterFlushExample {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//geerbte Methode von java.io.Writer
fileWriter.write("JournalDev");
//geerbte Methode von java.io.OutputStreamWriter
fileWriter.flush();
fileWriter.write(" Tutorials");
fileWriter.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
schließen()
Diese Methode spült den Stream, bevor sie ihn schließt. Nachdem der Stream geschlossen wurde, führt der Aufruf der Methode write()
oder flush()
dazu, dass eine IOException
ausgelöst wird. Das Schließen eines zuvor geschlossenen Streams hat keine Auswirkungen.
package com.journaldev.io.filewriter;
import java.io.FileWriter;
/**
* Java write file with FileWriter close() method
*
* @author pankaj
*
*/
public class FileWriterCloseExample {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
//geerbte Methode von java.io.Writer
fileWriter.write("JournalDev");
//geerbte Methode von java.io.OutputStreamWriter
fileWriter.close();;
fileWriter.write(" Tutorials");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output:
java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.Writer.write(Unknown Source)
at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)
FileWriter vs FileOutputStream
- FileWriter ist dafür gedacht, Zeichenströme zu schreiben, während FileOutputStream für das Schreiben von Rohbytes verwendet wird.
- FileWriter behandelt 16-Bit-Zeichen, während FileOutputStream mit 8-Bit-Bytes arbeitet.
- FileWriter kann Unicode-Zeichenfolgen verarbeiten, während FileOutputStream Bytes in eine Datei schreibt und keine Zeichen oder Zeichenfolgen akzeptiert, daher muss es von
OutputStreamWriter
umschlossen werden, um Zeichenfolgen zu akzeptieren.
Sie können auch java write file überprüfen, um mehr darüber zu erfahren, wie man Dateien in Java schreibt. Das ist alles für Java FileWriter, ich hoffe, hier wurde nichts Wichtiges verpasst.
Sie können alle Beispiele aus unserem GitHub-Repository herunterladen.
Referenz: API-Dokumentation
Source:
https://www.digitalocean.com/community/tutorials/java-filewriter-example